私はC++でプログラムされたdllと、Visual C++でプログラムされたexeを持っています。"エラーLNK2028:未解決のトークン..."のためにソリューションをコンパイルできません。
私は、DLL内の関数を持っているのように宣言:
string __declspec(dllexport) ConfigureHAT(T_STRING pathFile);
そしてEXEプロジェクトで、私はすべてのヘッダーファイルとDLLファイルが含まれています。
私はDLL内の関数を呼び出す:
string ret = ConfigureHAT("file.txt");
そして実行可能なプロジェクトがコンパイルされるとき、それは次のエラーで失敗します。
1> HATdllTester.obj:エラーLNK2028:未解決のトークン(0A000317) "クラス のstd ::のbasic_string、クラス のstd ::アロケータ> __cdecl ConfigureHAT(クラス のstd ::のbasic_string、クラス のstd ::アロケータ>)" (?ConfigureHAT @@ $$ FYA?AV?$ basic_s "private:void __clrcall HATdllTester :: mainWindow :: buttonConfigure_Click(class System()内で参照されている) ::オブジェクト ^、クラスシステム:: EventArgsの^)」 (?buttonConfigure_Click @メインウィンドウ@ HATdllTester @@ $$ FA $ AAMXP $ AAVObject @システム@@ P $ AAVEventArgs 4 @@ Z @)
1> AssemblyInfo.obj:エラーLNK2028:未解決のトークン(0A000316) "クラス のstd ::のbasic_string、クラス のstd ::アロケータ> __cdecl ConfigureHAT(クラス のstd ::のbasic_string、クラス のstd ::アロケータ>)" (ConfigureHAT @ $ $ FYA?AV?$ basic_string @ DU?$ char_traits @ D @ std @@ V?$ allocator @D @ 2 @ std @@ V12 @@ Z) は、 "private:void __clrcall HATdllTester :: mainWindow :: buttonConfigure_Click(クラスSystem :: Object ^、クラスSystem :: EventArgs ^)" (?buttonConfigure_Click @ mainWindow @ HATdllTester @@ $$ FA $ AAMXP $ AAVObject @システム@@ P $ AAVEventArgs 4 @@ Z @)
1> AssemblyInfo.obj:エラーLNK2019:未解決の外部シンボル「クラス のstd ::のbasic_string、クラス のstd ::アロケータ> __cdecl ConfigureHAT(クラス std :: basic_string、クラス std :: allocator>) " (?ConfigureHAT @@ $$ FYA?AV?$ basic_string @ DU?$ char_traits @ D @ std @@ V?$ allocator @D @ 2 @@ std @@ V12 @@ Z) は、関数 "private:void __clrcall HATdllTester :: mainWindow :: buttonConfigure_Click(クラスSystem :: Object ^、クラスSystem :: EventArgs ^) " (?buttonConfigure_Click @ mainWindow @ HATdllTester @@ $$ FA $ AAMXP $ AAVObject @ System @ P $ AAVEventArgs @ 4 @@ Z)
1> HATdllTester.obj:エラーLNK2001:未解決の外部シンボル「クラス のstd ::のbasic_string、クラス のstd ::アロケータ> __cdecl ConfigureHAT(クラス のstd ::のbasic_string、クラス STD: :allocator>) " (?ConfigureHAT @@ $$ FYA?AV?$ basic_string @ DU?$ char_traits @D @ std @@ V?$ allocator @D @ 2 @ std @@ V12 @@ Z)
誰か助けてくれますか? 同じエラーで多くの同様のメッセージを読みましたが、誰も私の問題を解決しません。
ありがとうございました。>リンカ - - >入力 - >追加の依存
EDIT
は最後に、私はプロジェクトのプロパティへのDLLプロジェクトで生成されたの.libファイルを含む問題を解決します。
VC++では、dllでC++シンボルを使用できますか? AFAIK、シンボルをC言語でエクスポートする必要があります(つまり 'extern" C "{/ * declaration * /}') – Geoffroy
'.dll'と一緒に生成された' .lib'とリンクしていますか? (p.s: 'std :: string'をDLL境界に返すことは非常に悪い考えです。) – Simple
はい、私は.libにリンクしています。なぜstd:文字列を返すのが悪い考えですか?私はそれを知らなかった。 – sansub