Visual C ++ 2010:“未解析的令牌”LNK2020

时间:2012-08-27 06:56:28

标签: c++-cli token linker-errors

我有一个包含两个项目的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”,但这似乎是作弊。有人知道我可能会缺少什么吗?

1 个答案:

答案 0 :(得分:0)

不知何故,您必须在ProjectX中添加ProjectXTests中的代码。这不是通过字面上使用#include指令来完成的,而最简单的方法是将源文件从ProjectX添加到ProjectXTests项目工作区。如果ProjectX是静态的动态库,那么请改为链接。