
皆さん こんにちは。
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ランキング
-
C言語のエラー LNK1120: 外部参照
-
LNK2019: 未解決の外部シンボル...
-
外部シンボル" ~~"は未解決で...
-
外部依存関係について
-
C++の関数をfortranから呼びた...
-
エラー 未解決の外部シンボル
-
外部シンボルについて
-
LNK2019: 外部シンボル どのよ...
-
python エラー
-
エクセルのエラーメッセージ「4...
-
<unistd.h>をVisualStudioでつ...
-
Visual studio2017で、2回目の...
-
アプリケーションのDLLファイル...
-
” OS ビルド ” の意味が分か...
-
VC++6の「プロセスへアタッチ」...
-
eclipseでデバックするとエラー...
-
Excelのエラーで困ってます。
-
DLL参照時に指定されたモジュー...
-
ビルド時のエラー(書き込みで...
-
visual C++ でビルドの中止がで...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
外部依存関係について
-
外部シンボル" ~~"は未解決で...
-
未解決の外部シンボル
-
LNK2019: 外部シンボル どのよ...
-
C++/CLIでfstream(.NET 3.5)
-
C言語のエラー LNK1120: 外部参照
-
パブリックシンボルとは?
-
プロセスIDの取得の方法。
-
popen・pcloseについて
-
LNK2019: 未解決の外部シンボル...
-
このプログラムを動かしたいの...
-
VC++/MFCで error LNK2001
-
C++のエラーの内容について
-
コンパイルエラー
-
外部シンボルの未解決のエラー
-
PathIsDirectoryを使って
-
open dynamics engine の導入
-
ビルドエラー
-
C言語ソースのオラクルコンパイ...
-
外部シンボル未解決 LNK2001
おすすめ情報