ページ 11

C++Builder DLL

Posted: 2013年2月21日(木) 18:04
by Cユーザー
VC++で作成したDLLをC++Builderで使おうとするとリンカエラになります。

色んな掲示板、サイトを検索した結果以下の対応が必要なのがわかりました。

・implibコマンドを使い、C++Builder用のlibファイルに変換
・そのファイルをプロジェクトに追加
・DLLとヘッダーを同階層に追加

実際に使うと、Unresolved external (関数名)
referenced from...

というリンカエラーが出ます。
色んな掲示板で似た質問がありますが、解決できた!
という回答がありません

ご教授お願いします

Re: C++Builder DLL

Posted: 2013年2月21日(木) 18:25
by softya(ソフト屋)
前の質問でh2so5さんが紹介されたサイトは全部読まれたのでしょうか?
「C++Builder DLL • C言語交流フォーラム ~ mixC++ ~」
http://dixq.net/forum/viewtopic.php?t=12516&p=100313

>実際に使うと、Unresolved external (関数名)
>referenced from...

C++のDLLにおける名前問題を解決されていないようですが。

Re: C++Builder DLL

Posted: 2013年2月21日(木) 19:51
by Cユーザー
ちゃんと翻訳して読みましたよ
読んで今に至るわけですが

Re: C++Builder DLL

Posted: 2013年2月21日(木) 20:16
by softya(ソフト屋)
Cユーザー さんが書きました:ちゃんと翻訳して読みましたよ
読んで今に至るわけですが
それではdefファイルで名前をちゃんと定義されたのでしょうか?

Re: C++Builder DLL

Posted: 2013年2月21日(木) 20:30
by Cユーザー
はい、もちろん。
そのサイトの最後に例文ありますがその通りにしても同じになります。
もちろんdefファイルで定義はしてます

Re: C++Builder DLL

Posted: 2013年2月21日(木) 21:31
by softya(ソフト屋)
それでは、順番に確認するしか無いと思います。
1)VC++のDLLはdefファイルでちゃんと名前が変更されているかDLLをツールで確認。
2)__stdcallで統一されていることを確認。
3)VC++のインポートライブラリを変換したインポートライブラリがちゃんと変換されているか確認。

私はC++Builderを持っていないので検証は申し訳ないですが出来ません。

Re: C++Builder DLL

Posted: 2013年2月28日(木) 08:42
by Cユーザー
・implibでC++builder用のlib作成
・__stdcallを関数の前につける
・インポートにdefファイルを使う
・externCで関数宣言を囲む

で解決しました。