
使用環境はVisualStudio2008、WindowsXPです。
http://www.voidtools.com/Everything-SDK.zip
こちらのSDKに添付されているdllを呼び出したいと思います。
dll、lib、ヘッダーファイルをプロジェクトと同じフォルダに入れて以下のようなコードを書いてみたのですが、リンカエラーになりました。
#pragma comment(lib, "everything.lib")
void __stdcall Everything_SetSearch(LPCTSTR lpString);
void main(void){
Everything_SetSearch(L"ああ");
}
ビルドエラーの内容
error LNK2019: 未解決の外部シンボル "void __stdcall Everything_SetSearch(wchar_t const *)" (?Everything_SetSearch@@YGXPB_W@Z) が関数 _main で参照されました。
fatal error LNK1120: 外部参照 1 が未解決です。
何か初歩的なミスをしている気もしますが、突っ込みなどなど回答の方よろしくお願いします。
No.4ベストアンサー
- 回答日時:
Everything.libの内容をみると、該当の関数は次のようになっています。
※ dumpbin /EXPORTS Everything.lib で確認できます(それぞれPath必要)
_Everything_SetSearchA@4
_Everything_SetSearchW@4
質問者さんのリンクのエラーを見ると、これら関数が次のような名称でなければ一致しないことになります。
?Everything_SetSearch@@YGXPB_W@Z
この違いに対してextern "C"を用いて関数名を調整します。
http://www.geocities.jp/ky_webid/cpp/language/03 …
質問者さんが、
void __stdcall Everything_SetSearch(LPCTSTR lpString);
と記載しているところを
extern "C"{
#include "Everything.h"
}
に変更します。
これで解決するのではないでしょうか。
仰る通りにしたら無事に実行できました。
なるほどオーバーロードがあるC++では、名前が被らないように文字列が付け足されるんですか。
だからextern "C"が必要と。
また一つ勉強になりました、ありがとうございます。
No.3
- 回答日時:
普通にビルド出来たけど…
#include "stdafx.h"
extern "C" {
#include "Everything.h"
}
#pragma comment(lib, "everything.lib")
int _tmain(int argc, _TCHAR* argv[])
{
Everything_SetSearch(_T("ああ"));
return 0;
}
No.1
- 回答日時:
解決しましたでしょうか・・・・・・・。
なんでだろ?と思ってちょっとそのライブラリ見てみました。ほんとにそのソースでコンパイルしているとしたら、まずは include ファイルの中身眺めてみるといいとおもいます・・・・・・。いろいろ気がついてくれれば・・・・・と思い、スミマセン。
この回答への補足
ちなみに宣言部分を以下のようにしてみましたがリンカエラーは変わりませんでした。
__declspec(dllimport) void __stdcall Everything_SetSearchW(LPCWSTR lpString);
また、最初はヘッダーファイルをincludeしていたのですが
#pragma comment(lib, "everything.lib")
#include "Everything.h"
void main(void){
Everything_SetSearch(L"ああ");
}
error LNK2019: 未解決の外部シンボル "__declspec(dllimport) void __stdcall Everything_SetSearchW(wchar_t const *)" (__imp_?Everything_SetSearchW@@YGXPB_W@Z) が関数 _main で参照されました。
fatal error LNK1120: 外部参照 1 が未解決です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
外部依存関係について
-
リンカのエラー
-
LNK2019: 外部シンボル どのよ...
-
LNK2001(Pro*c)
-
IP Helper APIを使うとエラーが...
-
C++/CLIでfstream(.NET 3.5)
-
実行ファイルの容量を減らした...
-
python エラー
-
<unistd.h>をVisualStudioでつ...
-
” OS ビルド ” の意味が分か...
-
ビルドとリビルドの違いを教え...
-
res://ieframe.dll/について
-
visual studio2019でデバッグが...
-
適切な変換関数が存在しない???
-
「fatal error C1189」を回避す...
-
vb2010にてASPWEBシステムを作...
-
VB2008で定数に色の設定をした...
-
ダイアログなどの文字列が文字...
-
エクセルVBAではRound...
-
コールバック関数指定時のエラー
マンスリーランキングこのカテゴリの人気マンスリー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++の関数を...
-
コンパイルエラー
おすすめ情報