2012-01-12 112 views
1

我试图建立与2个项目的解决方案,并得到这些错误消息:错误LNK2019和LNK2028在VC++ Express 2008的

ColliderTest.obj:错误LNK2028:未定义的令牌(0A000080)“公开:__thiscall矩形: :函数“void __cdecl myFunction(void)”(?myFunction @@ $$ FYAXXZ)中引用的“Rect(int)”(?? 0Rect @@ $$ FQAE @ XZ)

ColliderTest.obj:error LNK2019:unresolved在函数“void __cdecl myFunction(void)”中引用的外部符号“public:__thiscall Rect :: Rect(int)”(?? 0Rect @@ $$ FQAE @ XZ)

代码:

  • 在项目 “撞机” 我有这些文件:

Collider.h

#pragma once 

class Rect{ 

    int x; 
    int y; 
    unsigned int w; 
    unsigned int h; 

public: 
    Rect(int x); 
}; 

Collider.cpp

#include "Collider.h" 

Rect::Rect(int x){ 
    this->x = x; 
} 
  • 项目 “ColliderTest”有一个参考项目对撞机,这个文件:

ColliderTest.cpp

#include "../app/Collider.h" 

void myFunction(); 

void myFunction(){ 

    Rect rect(4); 
} 

此外,每个项目都有一个空的Main()函数的main.cpp文件,避免抱怨入口点的compiller的。

+0

在搜索了一些关于该问题的信息之后,我得出结论,问题在于参考。它可能无法正确完成。我认为这可以帮助更多:http://msdn.microsoft.com/en-us/library/ms235590(v=vs.80).aspx – AlexSavAlexandrov 2012-01-12 23:54:12

回答

2

这两个项目都有一个主要功能?

这意味着您正在构建两个可执行文件。可执行文件通常不会导出函数。

您需要一个可执行文件和一个类库(dll)。

顺便说一句:如果你有一个空的主函数,你怎么知道你的程序是否运行?

+0

不可能有一个可执行项目,另一个来测试它?我记得我用C#做过类似的事情,所以我认为它会是一样的。 – Granjero 2012-01-12 22:37:45

+1

C#支持多种主要方法,告诉编译器使用哪一个(通过它所在的类名称)进行特定构建。 C++不直接支持这种事情,尽管类似的事情可能会用聪明的项目/ makefile配置拼凑起来。 – 2012-01-13 00:43:41

+1

@格兰杰罗:你可能有两个可执行文件,但你必须使用进程间通信来使用另一个进行测试。我怀疑这不是你想要的。 – 2012-01-13 15:12:46