C ++链接错误未解决的外部符号
Posted
技术标签:
【中文标题】C ++链接错误未解决的外部符号【英文标题】:C++ linking error unresolved external symbol 【发布时间】: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 帮助。 【参考方案1】:当您构建您所依赖的项目时,它应该同时生成一个 lib 和一个 dll。您需要将该库与您的项目链接。有关如何在项目中链接 lib 的屏幕截图,请参阅 this 线程。
【讨论】:
我已经尝试过了 - 我在问题的第三段中列出了该尝试。它没有任何区别。我仍然遇到同样的错误。 @user1217150 你说你试图链接 dll,而不是 lib。 @user1217150 我怀疑问题出在名称修改/调用约定上。cdecl
的名称修改不应该是问题...您是否验证了函数的标头声明和 cpp 定义都使用 _cdecl
?您可以尝试从所有内容中删除 _cdecl
并重新编译库项目,看看是否有帮助。【参考方案2】:
我发现我在 Link - Input 中的依赖项被删除了,因为我没有明确指定我可以在属性表中拥有依赖项。更改属性表后,我终于能够创建一个dll。
【讨论】:
以上是关于C ++链接错误未解决的外部符号的主要内容,如果未能解决你的问题,请参考以下文章