11

假设我在一个名为 one.cpp 的文件中有一个名为 DoThis(const char *abc) 的函数。因此,当我尝试从不同源文件 (two.cpp) 中的另一个函数调用此函数时,我收到错误:错误 LNK2001:未解析的外部符号 (C++),即使我使用了 #include "one.h"我要解决这个问题吗?

4

2 回答 2

17

这意味着您的函数的定义不存在于您的程序中。您忘记将其添加one.cpp到您的程序中。

在这种情况下,“添加”的含义取决于您的构建环境及其术语。在 MSVC 中(因为您显然使用的是 MSVC),您必须添加one.cpp到项目中。

在更实际的术语中,适用于所有典型的构建方法,当您链接程序时,one.cpp缺少创建的目标文件形式。

于 2013-07-09T06:37:07.230 回答
4

听起来您正在使用 Microsoft Visual C++。如果是这种情况,那么最有可能的是您不使用 one.cpp 编译 two.cpp(one.cpp 是 one.h 的实现)。

如果您来自命令行 (cmd.exe),请先尝试以下操作:cl -o two.exe one.cpp two.cpp

如果您来自 IDE,请右键单击解决方案探索中的项目名称。然后选择 Add, Existing Item.... 将 one.cpp 添加到您的项目中。

于 2013-07-09T06:39:12.190 回答