c++ - 链接 lib 时未解析的外部符号,编译器将字母 'A' 添加到函数名称

标签 c++ compiler-construction visual-c++ linker symbols

尝试链接 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 的宏通过在函数名称后缀 AW 来支持 Unicode 和 Ansi 构建。
AddJob()是 Win32 API 中的一个函数,因此有这样一个宏 - 你可以 #undef AddJob 来解决你的问题。

关于c++ - 链接 lib 时未解析的外部符号,编译器将字母 'A' 添加到函数名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2317502/

相关文章:

python - 错误 : "MSVCP90.dll: No such file or directory" even though Microsoft Visual C++ 2008 Redistributable Package is installed

c++ - boost::shared_ptr 和分配派生类

c++ - 除非我使用 cout,否则为什么我的值不正确?

java - 为什么自动装箱会使 Java 中的某些调用模棱两可?

c++ - 在 C/C++ 中使用常量优化的函数调用

c++ - 使用不带回调 C++ 的函数

c++ - std::abs 与 std::transform 不工作

c++ - 如何在 C++ 中的给定路径中创建目录?

php - PHP 5.4 的编译器当前状态如何?

c++ - 在构造函数中初始化的变量不保持初始化状态 (c++)