VC++で作成したDLLをC++Builderで使おうとするとリンカエラになります。
色んな掲示板、サイトを検索した結果以下の対応が必要なのがわかりました。
・implibコマンドを使い、C++Builder用のlibファイルに変換
・そのファイルをプロジェクトに追加
・DLLとヘッダーを同階層に追加
実際に使うと、Unresolved external (関数名)
referenced from...
というリンカエラーが出ます。
色んな掲示板で似た質問がありますが、解決できた!
という回答がありません
ご教授お願いします
C++Builder DLL
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: C++Builder DLL
前の質問でh2so5さんが紹介されたサイトは全部読まれたのでしょうか?
「C++Builder DLL • C言語交流フォーラム ~ mixC++ ~」
http://dixq.net/forum/viewtopic.php?t=12516&p=100313
>実際に使うと、Unresolved external (関数名)
>referenced from...
C++のDLLにおける名前問題を解決されていないようですが。
「C++Builder DLL • C言語交流フォーラム ~ mixC++ ~」
http://dixq.net/forum/viewtopic.php?t=12516&p=100313
>実際に使うと、Unresolved external (関数名)
>referenced from...
C++のDLLにおける名前問題を解決されていないようですが。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: C++Builder DLL
それではdefファイルで名前をちゃんと定義されたのでしょうか?Cユーザー さんが書きました:ちゃんと翻訳して読みましたよ
読んで今に至るわけですが
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: C++Builder DLL
それでは、順番に確認するしか無いと思います。
1)VC++のDLLはdefファイルでちゃんと名前が変更されているかDLLをツールで確認。
2)__stdcallで統一されていることを確認。
3)VC++のインポートライブラリを変換したインポートライブラリがちゃんと変換されているか確認。
私はC++Builderを持っていないので検証は申し訳ないですが出来ません。
1)VC++のDLLはdefファイルでちゃんと名前が変更されているかDLLをツールで確認。
2)__stdcallで統一されていることを確認。
3)VC++のインポートライブラリを変換したインポートライブラリがちゃんと変換されているか確認。
私はC++Builderを持っていないので検証は申し訳ないですが出来ません。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
-
Cユーザー
Re: C++Builder DLL
・implibでC++builder用のlib作成
・__stdcallを関数の前につける
・インポートにdefファイルを使う
・externCで関数宣言を囲む
で解決しました。
・__stdcallを関数の前につける
・インポートにdefファイルを使う
・externCで関数宣言を囲む
で解決しました。