c++ - 错误的函数名称重整

标签 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 编译了这两个项目,类只有一个标题。

请帮忙。

最佳答案

问题在于 time_t 声明的不同。库意味着它是 64 位的,但应用程序等待 32 位值。

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

关于c++ - 错误的函数名称重整,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14354649/

相关文章:

具有简单类定义的 C++ 未解析外部

visual-studio - Visual Studio 2008 解决方案中的最佳项目数是多少?

c++ - 依赖于 mac 的 Qt 应用程序 - 依赖 sdk 在 otool 列表中有@executable_path ...我该如何更改它?

c++ - 处理闪现窗口事件

c++ - 如何使用 GetPrivateProfileString() 从当前目录上升到目录

c++ - C# 到 c++/cli 到 unamanged c++ ref

linker - 当 VMA != LMA 时加载 ELF

c++ - 如何在 visual studio 中创建 Windows GUI?

entity-framework - 如何在 Entity Framework 中添加外键关系?

c - 如何防止 dlopened 库使用某些 libc 函数?