【问题标题】:Linker Error VS 2013 [duplicate]链接器错误VS 2013 [重复]
【发布时间】: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

【问题讨论】:

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


【解决方案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"。当您知道重复时发布答案会将信息传播到多个问题(在这种情况下,这些问题通常被严重低估),这与此目标背道而驰。您还会注意到,一旦重复被确认(投票),就不可能有进一步的答案(出于同样的原因)。
猜你喜欢
  • 2015-03-31
  • 1970-01-01
  • 1970-01-01
  • 2018-06-22
  • 1970-01-01
  • 2015-04-16
  • 1970-01-01
  • 1970-01-01
  • 2012-04-10
相关资源
最近更新 更多