
使用環境は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で質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# 未解決の外部シンボル _printfが関数_mainで参照されました 1 2022/09/18 15:28
- C言語・C++・C# const char** p;のとき、free(p)でC4090エラーとなるのはなぜですか 3 2023/03/31 16:28
- その他(プログラミング・Web制作) 十進BASICでの再帰についての質問です。 2 2022/11/18 09:17
- Perl Perl の外部モジュールの利用方法 3 2022/07/10 18:34
- C言語・C++・C# スタックフレームの消滅 6 2023/05/20 12:33
- C言語・C++・C# C言語初心者 ポインタについて、お助けください、、 2 2023/03/15 23:50
- その他(プログラミング・Web制作) IT初心者です 仕事で、vb.netで作成されたdllをvbaで呼び出すプログラムを作成しろと言われ 1 2023/03/27 08:22
- 英語 和訳 3 2022/06/22 17:29
- 英語 do everything you wantとは 3 2023/06/18 22:40
- C言語・C++・C# C++のcase文の書き方 4 2023/02/24 20:50
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VC++/MFCで error LNK2001
-
外部依存関係について
-
パブリックシンボルとは?
-
C言語のエラー LNK1120: 外部参照
-
外部シンボル" ~~"は未解決で...
-
未解決の外部シンボル
-
外部シンボルについて
-
エラー lnk2019について
-
popen・pcloseについて
-
c言語とfortranの混在プログラ...
-
OpenCVでの画像サイズ取得につ...
-
LNK2019: 未解決の外部シンボル...
-
python エラー
-
エクセルのエラーメッセージ「4...
-
<unistd.h>をVisualStudioでつ...
-
” OS ビルド ” の意味が分か...
-
Cランタイムライブラリのヘッダ...
-
エクセルVBAではRound...
-
アプリケーションのDLLファイル...
-
VBAを何回も作り直して、容量が...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
外部依存関係について
-
外部シンボル" ~~"は未解決で...
-
外部シンボルの未解決のエラー
-
LNK2019: 外部シンボル どのよ...
-
error LNK2001について
-
MFC C++ と C++/CLI の文字列
-
wsprintfのエラーについて
-
未解決の外部シンボル
-
PathIsDirectoryを使って
-
LNK2001(Pro*c)
-
C言語のエラー LNK1120: 外部参照
-
エラー 未解決の外部シンボル
-
C++ Builderでユニットの追加
-
パブリックシンボルとは?
-
IP Helper APIを使うとエラーが...
-
C++の関数をfortranから呼びた...
-
LNK2019: 未解決の外部シンボル...
-
『外部シンボル~未解決です。...
-
gdiplusのリンクエラー
-
このプログラムを動かしたいの...
おすすめ情報