实例化在另一个项目中定义的类时未解析的外部

unresolved externals when instantiate a class defined in another project

本文关键字:外部 实例化 另一个 项目 定义      更新时间:2023-10-16

我有两个项目A和B。A包含一个头/源文件,它只定义了一个类Child。我首先构建了A,没问题。然后构建B,得到CCD_ 2。注意,我可以在A中实例化Child,没有任何问题。我正在使用Visual Studio 2012。

项目A:

// Dominate.cpp
#include "Dominate.h"
Child::Child(int x)
{ }
// Dominate.h
class Child 
{
public:
    int val;
    Child(int x);
};

项目B:

#include "../ConsoleApplication1/Dominate.h"
int _tmain(int argc, _TCHAR* argv[])
{
    Child a = Child(13); // unresolved externals
    return 0;
}

不知何故,你需要将dominate.obj链接到项目B中。我不是一个足够的VS构建专家,无法为你提供如何做到这一点的详细信息,尽管一种简单可行的方法可能是将dominate.compp添加到项目B。我相信菜单项类似于project/add Existing。。。,然后浏览并选择dominate.cpp.

两个cpp文件需要在同一个项目中。您可以使用菜单命令"项目"、"添加到项目"、。。。使其成为这样。然后使用"生成"命令。它编译两个cpp,然后运行链接器来组合这两个obj。您缺少的是这个链接器步骤。