原因不明のリンクエラー

リンクエラーがどうしても取れませんでした。

ReadTestDlg.obj : error LNK2019: 未解決の外部シンボル "void __cdecl SetFDA(unsigned int,void *)" (?SetFDA@@YAXIPAX@Z) が関数 "public: void __thiscall CReadTestDlg::OnBnClickedButtonMemoryRead(void)" (?OnBnClickedButtonMemoryRead@CReadTestDlg@@QAEXXZ) で参照されました。
Debug/ReadTest.exe : fatal error LNK1120: 外部参照 1 が未解決です。


悩んで、悩んで、、、

いろいろ試してダメだったので、簡単な関数をかいてみた。

void Test(int a){printf("%d",a);}


これを、

void Test(int a);


でプロトタイプ宣言して使用してもリンクエラー。。。

これは、呼び出し規約か名前装飾規約っぽい。

よーくよーく考えたら、ファイルの拡張子が .c でした。

そうそう、cとc++は似て非なるもの。

そう、装飾されたシンボル名が違っていたのです。

extern "C" void Test(int a);


のように extern "C" をプロトタイプ宣言の前に付ける事で、装飾規約をC言語互換とすることで、無事にリンクエラーが解消した訳です。

ふぅ、、、面倒な事をしてくれる。
[PR]
by isoq | 2006-12-21 11:13 | C/C++/Win32
e87.com(千趣会イイハナ) 花を贈るなら日比谷花壇
<< DLL内部で作成したスレッドの... Visual Studio 2... >>