由于标题,C ++ Unresolved Externals

时间:2014-10-26 16:02:43

标签: c++

我刚开始使用C ++来处理一些OpenGL应用程序,并希望将一些怪物函数打包到一个util类中,以便我的代码保持干净。这就是我所做的:

  1. awesomeClass.h:

    #pragma once    
    class AwesomeClass    
    {    
    public:    
        static void do_something_awesome();    
    };    
    
  2. awesomeClass.cpp:

    #include "awesomeClass.h"    
    void do_something_awesome(){    
     //...    
    }    
    
  3. main.cpp:

    #include "awesomeClass.h"    
    int main(int argc, char** argv)    
    {    
        AwesomeClass::versuchen();    
        return 0;    
    }
    
  4. 输出:

    Error   3   error LNK1120: 1 unresolved externals   \Visual Studio 2013\Projects\TestEnvironmment\Debug\TestEnvironmment.exe    TestEnvironmment
    
    Error   2   error LNK2019: unresolved external symbol "public: static void __cdecl AwesomeClass::do_something_awesome(void)" (?do_something_awesome@AwesomeClass@@SAXXZ) referenced in function _SDL_main   \Visual Studio 2013\Projects\TestEnvironmment\TestEnvironmment\main.obj TestEnvironmment
    

    该代码有什么问题?我的意思是当我将所有内容粘贴到一个文件中时它会起作用。

2 个答案:

答案 0 :(得分:5)

你应该写

void AwesomeClass::do_something_awesome(){... } 

而不是

void do_something_awesome(){... } 

否则您实现的功能不属于该类。

答案 1 :(得分:3)

如果你想在单独的cpp文件中写do_something_awesome,你应该写这个。

void AwesomeClass::do_something_awesome(){    
 //...    
} 

或者您可以使用:

    #pragma once    
    class AwesomeClass    
    {    
    public:    
        static void do_something_awesome(){
        //code here
        }  

    };