- 締切済み
ライブラリについて
MicroSoft VC++で作成された.dllや.libファイルはBorland C++Builderからは呼び出すことはできるのでしょうか?どなたか教えて下さい!!
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- hogejo
- ベストアンサー率42% (11/26)
defファイルで気をつけるべきは、以下の2点だと思います。 (1)正しくマングルされた関数名がdefファイルに書いてあること (2)その関数の序数が、DLL内の序数と合致していること nishimotuさんの場合は、インポートライブラリをリンクする際にエラーになったのだと思いますが、その際、マングル済みの関数名がエラーメッセージと共に表示されていると思います。それをdefファイルに書き写して、もう一度インポートライブラリを作り直しては如何でしょうか? Borlandのものを、VCから利用は経験ありますが・・・ 今回とは逆のパターンなので、正確なアドバイスはできないけど 投稿してみました。 以下は適当な解説です。 libは出来ないと思います。(インポートライブラリは後述) dllはできます。 VC製のDLLには、VC用のインポートライブラリ(lib)が同梱されていたかと思います。DLLはそのままC++Builderでも使用できますが、DLLとあなたのプログラムを結ぶインポートライブラリは、C++Builder用のモノを作る必要があります。 defファイルの?は、多分、VCでビルドした際に、extern "C"されていない(つまりC++リンケージの)関数だったことを表しているのだと思います。C++関数は、defファイルの関数名の記述に、引数の数などが必要だと思います。
- taka_tetsu
- ベストアンサー率65% (1020/1553)
IMPLIBで、DLLからLIBを作成する。 http://www.borland.co.jp/cppbuilder/freecompiler/faq/bccfaq2.html 呼び出し規約をあわせる http://www.borland.co.jp/qanda/cbuilder/c0005026.html
お礼
ありごとうございました!!参考サイトを読んでみたいと思います!!
補足
IMPLIBを使っても正常にリンクできませんでした…それで調べてみたのですが,IMPDEFをつかいモジュール定義ファイルを作成しその中身を見てみると関数定義の頭に?がついていました。これは,リンクできないことの問題があると思うのですがどうしたらいいのか分からず悩んでいます。何か分かることがあれば教えて下さい!!