我在编写Github上发现的食人魔样本时遇到了很多麻烦。
我有几个Intellisense错误,汇编和&链接错误。现在我遇到了2个链接器错误。我知道这里有很多类似的问题,因为我已经阅读了很多关于这个主题但我找不到(或看到)正确的解决方案。
error LNK2019: unresolved external symbol "public: __thiscall NFSpace::PlanetMapTile::PlanetMapTile(struct NFSpace::QuadTreeNode *,class Ogre::SharedPtr<class Ogre::Texture>,class Ogre::Image,class Ogre::SharedPtr<class Ogre::Texture>,int)" (??0PlanetMapTile@NFSpace@@QAE@PAUQuadTreeNode@1@V?$SharedPtr@VTexture@Ogre@@@Ogre@@VImage@4@1H@Z) referenced in function "public: class NFSpace::PlanetMapTile * __thiscall NFSpace::PlanetMap::finalizeTile(struct NFSpace::QuadTreeNode *)" (?finalizeTile@PlanetMap@NFSpace@@QAEPAVPlanetMapTile@2@PAUQuadTreeNode@2@@Z)
error LNK2019: unresolved external symbol "public: struct NFSpace::QuadTreeNode const * __thiscall NFSpace::PlanetMapTile::getNode(void)" (?getNode@PlanetMapTile@NFSpace@@QAEPBUQuadTreeNode@2@XZ) referenced in function "public: void __thiscall NFSpace::PlanetRenderable::setFrameOfReference(struct NFSpace::PlanetLODConfiguration &)" (?setFrameOfReference@PlanetRenderable@NFSpace@@QAEXAAUPlanetLODConfiguration@2@@Z)
这是与第一个错误相关的代码:
PlanetMapTile.h
namespace NFSpace {
class PlanetMapTile {
public:
PlanetMapTile(QuadTreeNode* node, TexturePtr heightTexture, Image heightImage, TexturePtr normalTexture, int size);
~PlanetMapTile();
};
}
PlanetMapTile.cpp
#include "PlanetMapTile.h"
namespace NFSpace {
PlanetMapTile::PlanetMapTile(QuadTreeNode* node, TexturePtr heightTexture, Image heightImage, TexturePtr normalTexture, int size) {
//do something
}
PlanetMapTile::~PlanetMapTile() {
//do something
}
}
PlanetMap.h
#include "PlanetMapTile.h"
namespace NFSpace {
class PlanetMap {
public:
PlanetMapTile* finalizeTile(QuadTreeNode* node);
};
}
PlanetMap.cpp
#include "PlanetMap.h"
namespace NFSpace {
PlanetMapTile* PlanetMap::finalizeTile(QuadTreeNode* node) {
mStep = 0;
return new PlanetMapTile(node, mHeightTexture, mHeightImage, mNormalTexture, getInt("planet.textureSize"));
}
}
任何帮助都将不胜感激。
答案 0 :(得分:0)
这就是你应该如何声明名称空间
PlanetMApTile.h
namespace NFSpace{
class PlanetMapTile {
public:
PlanetMapTile(QuadTreeNode* node, TexturePtr heightTexture, Image heightImage, TexturePtr normalTexture, int size);
~PlanetMapTile();
};
}
<强> PlanetMapTile.cpp 强>
#include "PlanetMapTile.h"
NFSpace::PlanetMapTile::PlanetMapTile(QuadTreeNode* node, TexturePtr heightTexture, Image heightImage, TexturePtr normalTexture, int size) {
//do something
}
NFSpace::PlanetMapTile::~PlanetMapTile() {
//do something
}
<强> PlanetMap.h 强>
#include "PlanetMapTile.h"
class PlanetMap {
public:
NFSpace::PlanetMapTile* finalizeTile(QuadTreeNode* node);
}
<强> PlanetMap.cpp 强>
#include "PlanetMap.h"
NFSpace::PlanetMapTile* PlanetMap::finalizeTile(QuadTreeNode* node) {
mStep = 0;
return new NFSpace::PlanetMapTile(node, mHeightTexture, mHeightImage, mNormalTexture, getInt("planet.textureSize"));
}
答案 1 :(得分:0)
所以我终于找到了解决方案:
考虑到PlanetMapTile()
和getNode()
都涉及QuadTreeNode*
并且~PlanetMapTile()
没有引发错误这一事实,我已经开始关注{{ 1}}声明位于 PlanetCubeTree.h 中。然后我尝试将QuadTreeNode
添加到 PlanetMapTile.h ,它解决了错误。
感谢您的帮助