【问题标题】:C++ linking error unresolved external symbolC ++链接错误未解决的外部符号
【发布时间】:2012-03-06 02:46:07
【问题描述】:

我有一个项目,其中包含来自不同项目的文件。我收到链接错误...

"未解析的外部符号"public: _cdecl classA::classA(void" (??()classA @@QEAA@XZ) 在函数“class classA *_cdecl”中引用 函数B(char const*)" (?functionB@@YAPEAVClassA@@PEBD@Z)...

和其他 125 个相同类型的错误(在构造函数之后,这是我刚刚列出的错误,我使用的类中的每个函数都在其中一个链接错误中提到)。
包含第二个项目的文件的路径包含在我的属性表中。该项目本身就可以很好地构建。
我试图将该项目添加到我的解决方案中,并将其添加为依赖项。没有帮助。我试图添加它在项目中创建的 dll - 链接器 - 输入。没有帮助。
在配置属性中,运行时库设置为 /MTd。
我什至尝试在我的包含前面添加 extern "C"。没有帮助。
我尝试使用 Debug 或 Release、x64 或 Win32 构建它们。我更喜欢 Release x64 但我会接受任何东西。
你能帮我吗 - 告诉我我做错了什么,或者在哪里寻找解决这个问题?非常感谢。

【问题讨论】:

  • 忘了说我在任何项目中都没有模板。
  • 您可以查看带有相应错误号的 Visual Studio 帮助。

标签: c++ visual-studio-2010 linker-errors


【解决方案1】:

当您构建您所依赖的项目时,它应该同时生成一个 lib 和一个 dll。您需要将该库与您的项目链接。有关如何在项目中链接 lib 的屏幕截图,请参阅 this 线程。

【讨论】:

  • 我已经尝试过了 - 我在问题的第三段中列出了该尝试。它没有任何区别。我仍然遇到同样的错误。
  • @user1217150 你说你试图链接 dll,而不是 lib。
  • @user1217150 我怀疑问题出在名称修改/调用约定上。 cdecl 的名称修改不应该是问题...您是否验证了函数的标头声明和 cpp 定义都使用 _cdecl?您可以尝试从所有内容中删除 _cdecl 并重新编译库项目,看看是否有帮助。
【解决方案2】:

我发现我在 Link - Input 中的依赖项被删除了,因为我没有明确指定我可以在属性表中拥有依赖项。更改属性表后,我终于能够创建一个dll。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-07
    • 1970-01-01
    • 2021-10-30
    • 2014-07-17
    • 2011-09-03
    • 2010-11-20
    • 1970-01-01
    • 2021-04-15
    相关资源
    最近更新 更多