当我尝试编译代码时,出现以下错误消息-


  在功能上
  '__static_initialization_and_destruction_0':
  家庭/用户/main.cpp:50:未定义
  参考
  'PhysEng2D :: PhysEng2D(无效)'


第50行的唯一代码是-

PhysEng2D Physics;


PhysEng2D的头文件是-

#ifndef _PHYSENG2D_H_
#define _PHYSENG2D_H_

#include "primitives.h"

class PhysEng2D
{
public:

    PhysEng2D::PhysEng2D();
    PhysEng2D::~PhysEng2D();

    bool IsBoundingBoxCollision(PS2Sprite & S1, PS2Sprite & S2);

    bool IsWallCollision(PS2Sprite & S);

};

#endif


其余PhysEng2D的开头是-

#include "primitives.h"
#include "physeng2d.h"


PhysEng2D::PhysEng2D()
{
    //Nothing to Initialise
}

PhysEng2D::~PhysEng2D()
{
    //Nothing to clean up
}


(我没有完整包含这些方法,因为我认为它们不相关)

抱歉,我知道这可能是我犯的一个非常愚蠢的小错误。

最佳答案

您需要编译每个cpp文件,然后链接它们。

g++ -c -Wall main.cpp
g++ -c -Wall physeng2d.cpp

g++ -o myapp main.o physeng2d.o


您还应该从.h中的类定义中删除PhysEng2D::前缀

关于c++ - C++中未定义的引用编译器错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5938501/

10-13 01:20