【问题标题】:Add existing cpp file to visual studio C++ project将现有 cpp 文件添加到 Visual Studio C++ 项目
【发布时间】:2014-06-20 10:23:51
【问题描述】:

我尝试过:“源文件 > 添加 > 现有项目”并选择了 .cpp/.h 文件,但仍然出现链接器错误(可能是因为我的 .cpp 文件没有传递到编译器):

错误 LNK2001:无法解析的外部符号“struct Mem mem” (?mem@@3UMem@@A)

我该如何解决?

【问题讨论】:

  • 可能有一百种不同的东西——首先检查它是否被编译(例如添加一个#error Give error here!——这应该会发生错误)。如果这还不够明显,那么也许可以发布更多关于你在做什么的细节?
  • @MatsPetersson:确实如此。在我尝试添加到项目的两个文件中给出此消息:filename.cpp(8) : fatal error C1189: #error : Give error here!
  • 那么,显然它正在编译。接下来检查它是否真的在链接命令中 - 删除 #error 行并在全局范围内添加诸如 extern int KerFlunk; 之类的行 - 如果您收到 KerFlunk 缺失的错误,则链接器正在工作,您正在只是缺少适当的声明——没有向我们展示任何代码,我们只能猜测。
  • extern int KerFlunk; 没有给出错误消息。错误数量与之前保持一致:2,大约unresolved external symbol。我应该显示什么代码?我的意思是,我创建了一个新项目并尝试将两个现有项目添加到当前项目中,但它确实未能在链接器级别进行编译。
  • 也许您需要实际“使用”KerFlunk(例如在某些代码中添加int x = KerFlunk) - 我很确定问题出在您的实际代码中。首先显示您的 struct Mem mem; 的声明和定义

标签: c++ visual-studio visual-studio-2008 linker


【解决方案1】:

我找到了解决方案。我在头文件中有extern struct Foo,我忘记在某些.cpp 文件中给出实际定义。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-07-16
    • 1970-01-01
    • 2020-12-22
    • 2011-03-04
    • 1970-01-01
    • 1970-01-01
    • 2011-05-01
    • 1970-01-01
    相关资源
    最近更新 更多