![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
皆さん こんにちは。
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で質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) IT初心者です 仕事で、vb.netで作成されたdllをvbaで呼び出すプログラムを作成しろと言われ 1 2023/03/27 08:22
- C言語・C++・C# Windows Formアプリからコンソールを呼び出して文字を出力させたい 8 2023/05/09 10:53
- Windows 10 IT初心者です! powershellで以下のようなエラーが出ました オブジェクト参照がオブジェクト 1 2023/05/17 11:30
- ノートパソコン .dllファイルがありませんと表示される 5 2023/04/30 03:03
- その他(プログラミング・Web制作) 十進BASICでの再帰についての質問です。 2 2022/11/18 09:17
- Perl Perl の外部モジュールの利用方法 3 2022/07/10 18:34
- Excel(エクセル) Indirect関数について、Formulatextで抽出した数式を参照したい。 1 2022/12/15 11:16
- フリーソフト cygewf-2.dllがない、と表示され、ダウンロードしたファイルが動作しない 2 2023/03/27 11:05
- その他(プログラミング・Web制作) python OpenPyXLを使って出力結果をエクセルに書き込み 2 2022/06/04 19:46
- その他(コンピューター・テクノロジー) パソ粥が壊れてしまい。 新しく買ったパソコンに Amplitued5 Max をダウンロードインスト 1 2022/05/22 00:33
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C++の関数をfortranから呼びた...
-
Microsoft visual C++ 2010 Exp...
-
OpenCVでの画像サイズ取得につ...
-
外部依存関係について
-
LNK2001(Pro*c)
-
外部シンボル" ~~"は未解決で...
-
LNK2019: 外部シンボル どのよ...
-
Visual C++ 2005 Express Editi...
-
「外部参照 1 が未解決です。」...
-
python エラー
-
エクセルのエラーメッセージ「4...
-
<unistd.h>をVisualStudioでつ...
-
アプリケーションのDLLファイル...
-
fortranでプログラムを実行する...
-
適切な変換関数が存在しない???
-
VBAを何回も作り直して、容量が...
-
バッチからsqlplusの接続エラー...
-
共有ライブラリの内容確認について
-
multiple definitionというエラー
-
dllをいじる。。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
外部依存関係について
-
外部シンボル" ~~"は未解決で...
-
error LNK2001について
-
C++でのエラー LNK2001
-
外部シンボルの未解決のエラー
-
LNK2019: 外部シンボル どのよ...
-
popen・pcloseについて
-
「外部シンボルが未解決」につ...
-
C言語のエラー LNK1120: 外部参照
-
パブリックシンボルとは?
-
visual c++ 2008 でwindows プ...
-
C++STLについての質問です。
-
MFC C++ と C++/CLI の文字列
-
エラー 未解決の外部シンボル
-
コンパイルエラー
-
OpenCVでの画像サイズ取得につ...
-
実行ファイルの容量を減らした...
-
エラーについて
-
未解決の外部シンボル
-
コピーコンストラクタと、代入...
おすすめ情報