
皆さん こんにちは。
VCで作成したCのAPIを実装したDLLをBCB6.0で作成したアプリケーションから呼び出そうとしています。
コンパイルは通るのですが、リンク時に以下のエラーメッセージが表示されてしまいます。
[リンカ エラー] 外部シンボル 'My Function' が未解決(C:\BCB\***.OBJ が参照)
BCB6のフォームプロジェクトからDLLを利用するために、以下の手順を行いました。
(1)DLLをbcb用に変換する
implib -a aaa.lib aaa.dll
(2)プロジェクトにaaa.libを追加
(3)aaa.dllをプロジェクトのフォルダに追加
(4)コードを以下のように実装しました
extern "C" __stdcall ulong SysInitialize(void); //プロトタイプ宣言
ulong ulRetVal = SysInitialize(); //コード内での呼び出し
この状態でコンパイルは通るのですがリンカでエラーが発生します
[リンカ エラー] 外部シンボル 'SysInitialize' が未解決(C:\BCB\TELIGEV\MAINDLG.OBJ が参照
他のサイトで調べたところ、C++特有の修飾子"@***"がついている場合に同じエラーが出るとのことだったので、dumpbin.exeを使ってDLL内の関数をダンプしたところ、関数名にはアンダースコアや@などは関数名についていないようです。
dumpbinの出力結果
1 1D 000065A0 SysInitialize
このほか、自分なりに調べたところ、以下のサイトを見つけたのですが、英語力の弱さから解決策を見出すまでには至りませんでした。
Using Visual C++ DLLs with C++Builder http://bcbjournal.org/articles/vol4/0012/Using_V …
どなたか、ご助言いただけると助かります。
よろしくお願いします。
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
> VCで作成したCのAPIを実装した
と書かれていますが、これは本当にC としてビルドされていますか?
ただ普通にプロジェクトを作っただけでは VC++ は C++ としてプロジェクトをビルドします。
VC++ 2010 Express ではプロジェクトまたはソースのプロパティの「構成プロパティ」-「C/C++」-「詳細設定」の中に「コンパイル言語の選択」がありますので、「C コードとしてコンパイル」を設定してください。
早速回答していただきまして、ありがとうございます。
このDLLが本当にCのAPIを実装しているのか、実は裏付けが取れていませんでした。^_^;
dumpbin.exeの関数名にC++特有の@**がついていないことと、_がついていないのでCだろうなと思っていました。
ただ、implibで変換したlibファイルをバイナリエディタで確認したら、"_SysInitialize"となっていました。
dllは、"SysInitialize"になっていたので、これが原因かもしれません。
明日、dllの開発者に、「C コードとしてコンパイル」を設定したか確認してみます。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
未解決の外部シンボル
-
DXライブラリ3D導入方法
-
VS2013でrangecheckfailure
-
外部シンボル" ~~"は未解決で...
-
PathIsDirectoryを使って
-
LNK2001(Pro*c)
-
CLapack C++
-
error LNK2001について
-
C++STLについての質問です。
-
python エラー
-
DLLファイルの逆コンパイラにつ...
-
<unistd.h>をVisualStudioでつ...
-
バッチからsqlplusの接続エラー...
-
” OS ビルド ” の意味が分か...
-
unsigned long long 型のフォー...
-
visual studio2019でデバッグが...
-
Win8 で ASPのデバッグをするに...
-
ASP.NETのDLL入れ替えについて
-
fatal error LNK1112
-
DLL参照時に指定されたモジュー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
外部シンボル" ~~"は未解決で...
-
外部依存関係について
-
LNK2019: 外部シンボル どのよ...
-
VC++2008でのサンプルプログ...
-
wsprintfのエラーについて
-
libdecodeqrをVC6.0のダイアロ...
-
C言語のエラー LNK1120: 外部参照
-
未解決の外部シンボル
-
DB2付きのC言語がコンパイルで...
-
エラー 未解決の外部シンボル
-
『外部シンボル~未解決です。...
-
CLapack C++
-
VS2013でrangecheckfailure
-
外部シンボルの未解決のエラー
-
error LNK2001について
-
C++でのエラー LNK2001
-
popen・pcloseについて
-
LNK2019: 未解決の外部シンボル...
-
クラスを使ったC++の関数を...
-
コンパイルエラー
おすすめ情報