わたなべです。

Takaaki Tateishi <ttate / kt.jaist.ac.jp> writes:

:拡張ライブラリ中で他の拡張ライブラリのAPIを使用する場合,Windows
:ではインポートライブラリを作る必要があると思っているのですが,間
:違っている,あるいは,他に方法があるのでしょうか?

Windowsではそうしないとまずいですね。
それとは別に、拡張ライブラリを共有ライブラリとしてリンクしな
いとundefinedになってしまうOSもあると思います。
(たぶん--enable-sharedしないと拡張ライブラリが使えないようなOS)。

:たとえば,拡張ライブラリ A.so, B.so があるとします.このとき,B.so
:はA.soのAPIを使っているとします.僕はcygwin,mingwのことしか分からな
:いのですが,dlltoolでdefファイルをもとにA.soのインポートライブラリ
:A.libを作ってから,B.soを作るときにA.libをリンクする必要があると思
:っています.

VC++だと基本的にはそうなると思います。

cygwinとmingwに関しては、--export-all-symbolsかdefファイルで
必要なシンボルをexportしてA.soを作っておけば、インポートライ
ブラリを作らなくてもGNU LDは直接A.soをリンクできます。結局の
ところ上記undefinedになるOSと同じようことですが。
#でも流石に.soはまずそう。

で、拡張ライブラリ内のシンボルexportするにしてもEXTERNは使え
ないので別の仕組みが必要になりますね。

-- 
わたなべひろふみ