链接lib时未解析的外部符号,编译器会在函数名称中添加字母"A"

Joa*_*son 2 c++ compiler-construction linker symbols visual-c++

尝试链接win32 exe项目时出现此错误.我在lib中链接了包含此方法的代码.但仍然会得到一个未解决的符号错误.

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'?

Geo*_*che 5

MS使用Win32 API的宏来支持Unicode和Ansi构建,方法是使用A或后缀函数名称W.
AddJob()是Win32 API中的一个函数,因此有一个这样的宏 - 你可以#undef AddJob摆脱你的问题.