C++Builder 1.0からSoundp.libを使ってみる

このページでは、 95Reader/98Readerと C++Builder 1.0で、簡単なプログラムを試しに作ってみたので その過程を紹介します。

目次

95Reader/98Readerを手に入れインストールする

Visual C++ 4.0からSoundp.libを使ってみるを 参照してください。

Soundp.libをリンクしてみる

C++Builderの最新版はC++Builder4です。 私のWindows95には、C++Builder1しか入っていません。 (Windows NTの方にはC++Builder3を入れてあるのですが…)

以下のようなプログラムを作成しました。 実行すると、"こんにちは"としゃべるプログラムです。


# include <WINDOWS.H>
# include <PF_Def.h>
# include <SOUNDMSG.H>

int main() {
  SoundMessage("こんにちは", 0);
  exit(0);
}

また、以下のようなMakefileを作成しました。 パスは、各自の環境似合わせて変更してください。


all:
	BCC32 -Id:\95READER\Prog95 hello.c Soundp.lib

error:
	BCC32 -Id:\95READER\Prog95 hello.c d:\95READER\Prog95\Soundp.lib

そして、以下のようにmakeしました。 makeする前には当然C++Builderのところにパスを 通しておく必要があります。 実行結果とともにmakeの様子を以下に示します。

> make -f hello.mak error
MAKE Version 5.0  Copyright (c) 1987, 1997 Borland International
        BCC32 -Id:\95READER\Prog95 hello.c d:\95READER\Prog95\Soundp.lib
Borland C++ 5.2 for Win32 Copyright (c) 1993, 1997 Borland International
hello.c:
Warning hello.c 10: Function should return a value in function main
Turbo Link  Version 2.0.68.1 Copyright (c) 1993,1997 Borland International
Fatal: Bad object file 'd:\95READER\Prog95\Soundp.lib' near file offset 0

** error 1 ** deleting error

理由は分かりませんが、Visual C++で作成されたライブラリなので、 C++Builderで直接リンクできないようです。

DLLからライブラリを作成してリンクしてみる

いろいろ本を読んでも難しいことが書いてあって、 いまいち良く分かりませんでした。 とりあえず、今のところimplibを使用して、DLLからライブラリを作成し、 そのファイルをリンクすれば動くらしいことが分かりました。 まず、以下のようにDLLからライブラリを作成しました。

> implib Soundp.lib d:\WINDOWS\SYSTEM\SOUNDP.DLL

次に、前に書いたMakefileで以下のようにmakeしました。

> make -f hello.mak

今度は、コンパイルができhello.exeができていました。 実行すると、「こんにちは」としゃべりました。

もちろん、このとき95Readerを起動しておかないと 音声は出ません。

実行ファイルを含めてリンクを張っておきます。 C++Builder用のDLLが必要なのかどうかは分かりません。 (そういうのが存在するのかな?)

E-mail : nnakamur@mxq.mesh.ne.jp