错误的函数名称错误

时间:2013-01-16 09:07:45

标签: c++ visual-studio linker name-mangling

我有一个导出函数的静态库

time_t SomeClass::getTime();

编译后,其名称被伪装为

?getTime@SomeClass@@QAE_JXZ

当我尝试使用它时,VS会返回错误

error LNK2001: unresolved external symbol "public: long __thiscall SomeClass::getTime(void)" (?getTime@SomeClass@@QAEJXZ)

我不知道出了什么问题。为什么同样的功能被不同地修改?我用同一个Visual Studio编译了两个项目,类有一个标题。

请帮助。

3 个答案:

答案 0 :(得分:1)

您是否已将.lib文件包含在链接器INPUT属性中? 如果您在同一个解决方案中同时拥有两个项目,则可以添加库作为主项目的参考:右键单击主项目和参考。

干杯,

答案 1 :(得分:1)

time_t声明中的问题存在差异。库意味着它是64位,但应用程序等待32位值。

剩下的问题是“为什么没有关于MSVS名称修改的好文档”?我已经阅读了很多,但没有找到参数列表中的下划线。

答案 2 :(得分:0)

尝试重建整个项目。 如果这不起作用,请检查Visual Studio目录(标题,库)