我有一个包含两个项目的VC ++ 2010解决方案:ProjectX和ProjectXTests。在当前配置中,ProjectX构建为静态库,ProjectXTests构建为DLL,用于测试ProjectX中的各种方法。现在,在ProjectX中,我有一个类User,其方法为getUserName(),如下所示:
// User.h
public ref class User
{
public:
User(String^ userName);
String^ getUserName();
private:
String^ userName;
};
构造函数和方法在User.cpp中实现。在ProjectXTests中,我有一个UserTests类,它在getUserNameTest()方法中测试getUserName()方法。它在UserTests.h中声明,并在UserTests.cpp中实现如下:
// UserTests.cpp
#include "UserTests.h"
#include "User.h"
void UserTests::getUserNameTest()
{
User^ testUser = gcnew User("name");
Assert::AreEqual("name", testUser->getUserName());
}
在ProjectXTests的项目属性(Common Properties - > Framework and References)中,我添加了对ProjectX的引用。在VC ++目录中,我为头文件和库文件添加了适当的目录。构建解决方案时,找到头文件“User.h”。但是,我收到链接错误
error LNK2020: unresolved token (06000005) User::getUserName
所有其他测试方法都会发生同样的事情。我只是想不通为什么会这样。到目前为止,我发现的唯一工作就是在“UserTests.cpp”中包含文件“User.cpp”而不是“User.h”,但这似乎是作弊。有人知道我可能会缺少什么吗?
答案 0 :(得分:0)
不知何故,您必须在ProjectX
中添加ProjectXTests
中的代码。这不是通过字面上使用#include
指令来完成的,而最简单的方法是将源文件从ProjectX
添加到ProjectXTests
项目工作区。如果ProjectX
是静态的动态库,那么请改为链接。