2013-09-26 46 views
5

私は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ファイルを含む問題を解決します。

+1

VC++では、dllでC++シンボルを使用できますか? AFAIK、シンボルをC言語でエクスポートする必要があります(つまり 'extern" C "{/ * declaration * /}') – Geoffroy

+3

'.dll'と一緒に生成された' .lib'とリンクしていますか? (p.s: 'std :: string'をDLL境界に返すことは非常に悪い考えです。) – Simple

+1

はい、私は.libにリンクしています。なぜstd:文字列を返すのが悪い考えですか?私はそれを知らなかった。 – sansub

答えて

3

私はVisual Studioプロジェクトの設定を変更しようとします。 [一般]> [共通言語ランタイムサポート]の下に/clr:pureの代わりに/clrと設定します。

関連する問題