【问题标题】:Unresolved external symbol with x64 flag c++ [closed]带有x64标志c ++的未解析外部符号[关闭]
【发布时间】:2011-10-10 13:37:45
【问题描述】:

我有一个 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 操作系统上运行。

有什么帮助吗?

【问题讨论】:

  • 什么未解析的外部符号?你的/操作系统/库?
  • 错误是什么?有问题的符号?
  • 抱歉,即使没有任何未解析符号的名称,也很难回答这个问题。顺便说一句,哪个操作系统-我假设是 Windows 7?
  • @crashmstr,错误是针对我的 dll 中的符号
  • @jpalecek,错误重新“无法解析的外部符号

标签: c++ linker 64-bit


【解决方案1】:

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

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

您的解决方案在设置为 win32 位环境时编译没有问题,但在为 x64 位环境编译时显示链接器错误。

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

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

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

还要检查您的 dll 是否确实在 x64 环境下构建。

检查您的类库项目是否使用任何旧的 Win32 特定库也是值得的。

【讨论】:

    【解决方案2】:

    如果我理解这一权利,您想构建一个 GUI 可执行文件并需要将其与您的自定义 dll 链接。所描述的错误可能由于多种原因而发生,但这是我想到的:

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

    【讨论】:

      猜你喜欢
      • 2020-08-09
      • 1970-01-01
      • 2013-02-28
      • 2012-11-19
      • 1970-01-01
      • 2010-10-12
      • 2017-02-07
      • 1970-01-01
      相关资源
      最近更新 更多