我正在尝试用2个项目构建解决方案并获取以下错误消息:

ColliderTest.obj:错误LNK2028:未定义的 token (0A000080)“公共(public):__ thiscall Rect::Rect(int)”(?? 0Rect @@ $$ FQAE @ XZ)在函数“void __cdecl myFunction(void)”(?myFunction中)中引用@@ $$ FYAXXZ)

ColliderTest.obj:错误LNK2019:未解析的外部符号“public:__ thiscall Rect::Rect(int)”(?? 0Rect @@ $$ FQAE @ XZ)在函数“void __cdecl myFunction(void)”(?myFunction @@)中引用$$ FYAXXZ)

编码:

  • 在“对撞机”项目中,我有以下文件:

  • 对撞机
    #pragma once
    
    class Rect{
    
        int x;
        int y;
        unsigned int w;
        unsigned int h;
    
    public:
        Rect(int x);
    };
    

    对撞机
    #include "Collider.h"
    
    Rect::Rect(int x){
        this->x = x;
    }
    
  • 项目“ColliderTest”具有对项目Collider和此文件的引用:

  • ColliderTest.cpp
    #include "../app/Collider.h"
    
    void myFunction();
    
    void myFunction(){
    
        Rect rect(4);
    }
    

    此外,每个项目都有一个main.cpp文件,其中的main()函数为空,以避免编译器抱怨入口点。

    最佳答案

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

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

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

    顺便说一句:如果您的主函数为空,您如何知道程序是否运行?

    关于c++ - VC++ Express 2008中的错误LNK2019和LNK2028,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8842834/

    10-13 08:16