带有x64标志c ++的未解析的外部符号

时间:2011-10-10 13:37:46

标签: c++ linker 64-bit

我有一个VS2008 C ++项目,目前我是在VS2010上编译的。 它包含一个dll和执行GUI项目。

使用x64标志构建dll时没有任何错误,但GUI有一些LNK错误可以在dll中运行。 “未解决的外部符号......”(错误LNK 2019和2001) 使用Win32标志没有LNK错误。

例如我有错误:

unresolved external symbol "public :void _cdecl aaa::bbb(void)*(?bbb@aaa@@QEAAXXZ) referenced in function "public:__cdecl ccc::ccc(class aaa &)" (??0@@QEAA@AEAVaaa@@@Z)

我在x64操作系统上运行。

请帮忙吗?

2 个答案:

答案 0 :(得分:1)

据我了解,您的问题如下:

您的解决方案包含一个类库项目和一些提供用户界面的somesort应用程序项目。

为win32位环境设置时,您的解决方案可以毫无问题地编译,但在为x64位环境编译时会显示链接器错误。

在编译x64环境时,很可能找不到GUI引用的类库项目输出。

我建议您尝试将配置管理器设置为x64或Win32来构建类库项目以匹配您的GUI项目。

检查您的项目配置是否未将类库构建到特定于环境类型的目录,并确保您的GUI项目使用对类库项目的引用而不是输出DLL。

同时检查您的dll是否实际构建在x64环境下。

还可能需要检查您的类库项目是否使用任何旧的Win32特定库。

答案 1 :(得分:0)

如果我理解这一点你想建立一个GUI可执行文件,需要将它与你的自定义dll链接。由于几个原因,可能会出现所描述的错误,但这是我想到的:

  • 在dll和gui项目中混合构建(32位/ 64位)
  • 为生成的* .lib缺少或不正确的链接路径 你的dll