链接器错误VS 2013 [重复]

Posted

技术标签:

【中文标题】链接器错误VS 2013 [重复]【英文标题】:Linker Error VS 2013 [duplicate] 【发布时间】:2014-08-10 10:36:45 【问题描述】:

在 VS 2013 C++ 中出现以下链接器错误:

错误 2 错误 LNK2019:无法解析的外部符号“void __stdcall DbgAssert(wchar_t const *,wchar_t const *,int)" (?DbgAssert@@YGXPB_W0H@Z) 在函数“public: __thiscall”中引用 CTextureRendererLeft::CTextureRendererLeft(struct IUnknown *,long *)" (??0CTextureRendererLeft@@QAE@PAUIUnknown@@PAJ@Z) C:\Users\Kapil\Documents\Visual 工作室 2013\Projects\MarkerTest\MarkerTest\Max3DCaptureVideo.obj MarkerTest

【问题讨论】:

这是一个常见的问题。有:***.com/questions/5373152/…***.com/questions/4961678/…***.com/questions/7318362/…***.com/questions/7828136/visual-c-lnk2019-error?rq=1 您的第一个错误是什么?你没有在这里给我们完整的画面.. 【参考方案1】:

DbgAssert 定义不正确。

要修复,请确保您拥有正确的#included 所有头文件,并且您没有丢失任何#includes。 其他人刚刚告诉我该错误可能是由于未链接所需的库,或者您忘记了DbgAssert 的正文。

这可能会得到完全相同的错误:

int myFunc();

int main()

    myFunc();
    return 0;

来自MSDN 的官方解决方案(Google 上的第一个链接,我可能会添加!):

在函数中发现未定义的外部符号(符号)。到 解决此错误,提供符号定义或删除代码 引用它。

【讨论】:

投反对票 - 解释你投反对票的原因。 DbgAssert 未定义的事实是这里的确切问题,我说明了解决方案。 问题不是#includes,他有一个已声明的符号(如果它是未声明的符号,那么#includes 可能是问题所在)但未定义。除非 #included all source files" 你的意思是他在项目中包含了源文件 - 那么如果他从某个文件中包含一个头文件,那么这可能是问题,但与该头文件关联的源文件不包括在内在项目中)。这可能是您的意思,因为您通常不使用#include“源”文件(.cpp 与 .h“头”文件)。 @PeterClark 我以前遇到过这个问题,我通过使用#include 来定义我错过的标题来修复它。这就是为什么我对这个问题发表评论,询问错误 #1 是什么(他们只提出错误 #2),而该错误可能有助于我们正确回答这个问题。 有一些副作用可能会产生影响,但这可能不是根本原因(我能想到根本原因的唯一情况是,如果您将模板定义移动到另一个文件,并从头文件中包含该文件)。鉴于这些可能性和您的编辑,我已删除了我的反对意见。 @zyboxinternational 不鼓励 - "the fundamental goal of closing duplicate questions is to help people find the right answer by getting all of those answers in one place"。当您知道重复时发布答案会将信息传播到多个问题(在这种情况下,这些问题通常被严重低估),这与此目标背道而驰。您还会注意到,一旦重复被确认(投票),就不可能有进一步的答案(出于同样的原因)。

以上是关于链接器错误VS 2013 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

qt creator qt5.1 vs2010 使用静态库时链接器错误

MS VC++ 2010的这个链接器错误是啥意思[重复]

设备和模拟器中iPhone应用程序上的Xcode链接器错误[重复]

未定义对向量<String> g++ 链接器错误的引用[重复]

链接器错误 - 未定义的符号

链接器错误构建GDAL VS2017