尝试链接 win32 exe 项目时出现此错误。我已经链接到包含此方法代码的库中。但仍然出现 Unresolved 符号错误。
error LNK2001: unresolved external symbol "public: bool __thiscall SharedJobQueue::AddJobA(class boost::shared_ptr<class domain::Job>)" (?AddJobA@SharedJobQueue@@QAE_NV?$shared_ptr@VJob@domain@@@boost@@@Z)
为什么说 AddJobA 末尾有 'A'。该方法被声明为 AddJob。
我查看了 'dumpbin/symbols' 的输出,它只包含 AddJob 而不是 AddJobA 的符号。为什么编译器要在函数名的末尾添加一个“A”?
最佳答案
MS 使用 Win32 API 的宏通过在函数名称后缀 A
或 W
来支持 Unicode 和 Ansi 构建。
AddJob()是 Win32 API 中的一个函数,因此有这样一个宏 - 你可以 #undef AddJob
来解决你的问题。
关于c++ - 链接 lib 时未解析的外部符号,编译器将字母 'A' 添加到函数名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2317502/