1つだけ過去を変えられるとしたら?

MicroSoft VC++で作成された.dllや.libファイルはBorland C++Builderからは呼び出すことはできるのでしょうか?どなたか教えて下さい!!

A 回答 (2件)

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ファイルの関数名の記述に、引数の数などが必要だと思います。

参考URL:http://fooo.boo.jp/304dlldef.html, http://fooo.boo.jp/
    • good
    • 0

IMPLIBで、DLLからLIBを作成する。


http://www.borland.co.jp/cppbuilder/freecompiler …

呼び出し規約をあわせる
http://www.borland.co.jp/qanda/cbuilder/c0005026 …

この回答への補足

IMPLIBを使っても正常にリンクできませんでした…それで調べてみたのですが,IMPDEFをつかいモジュール定義ファイルを作成しその中身を見てみると関数定義の頭に?がついていました。これは,リンクできないことの問題があると思うのですがどうしたらいいのか分からず悩んでいます。何か分かることがあれば教えて下さい!!

補足日時:2003/11/10 10:46
    • good
    • 0
この回答へのお礼

ありごとうございました!!参考サイトを読んでみたいと思います!!

お礼日時:2003/11/06 10:46

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!