7

我有一个用 C++ 编程的 dll 和一个用 Visual C++ 编程的 exe。

我将 dll 中的函数声明为:

string __declspec( dllexport ) ConfigureHAT(T_STRING pathFile);

在 exe 项目中,我包含所有头文件和 dll 文件。

我在dll中调用函数:

string ret = ConfigureHAT("file.txt");

并且当编译可执行项目时,它会失败并出现以下错误:

1>HATdllTester.obj : 错误 LNK2028: 未解析的令牌 (0A000317) "class std::basic_string,class std::allocator > __cdecl ConfigureHAT(class std::basic_string,class 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>AssemblyInfo.obj:错误 LNK2028:未解析的令牌(0A000316)“类 std::basic_string,类 std::allocator > __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>AssemblyInfo.obj:错误 LNK2019:无法解析的外部符号“类 std::basic_string,class std::allocator > __cdecl ConfigureHAT(class std::basic_string,class 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: 无法解析的外部符号 "class std::basic_string,class std::allocator > __cdecl ConfigureHAT(class std::basic_string,class std::allocator >)" (?ConfigureHAT@@$$FYA ?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V12@@Z)

有谁能够帮我?我阅读了很多具有相同错误的类似消息,但没有人解决我的问题。

谢谢。

编辑

最后,我解决了包括dll项目中生成的.lib文件进入Project Properties -> Linker -> Input -> Additional Dependencies的问题。

4

2 回答 2

3

我会尝试更改 Visual Studio 项目配置。在 General > Common Language Runtime Support 下设置/clr而不是/clr:pure.

于 2014-07-01T14:03:12.640 回答
0

当我更改CLRMyProjectCLR.vcxproj 项目文件并添加指向 CMyProjectC.vcxproj 项目的链接时,这对我有帮助

<ItemGroup>
    <ProjectReference Include=".\MyProjectC.csproj">
        <Project>{f6ead438-e6cf-4df6-b2f4-d33d533c5343}</Project>
    </ProjectReference>
</ItemGroup>
于 2020-11-22T16:59:04.733 回答