错误LNK2019:未解析的外部符号/

时间:2014-07-21 10:41:05

标签: visual-c++ compiler-errors linker-errors lnk2019

我在编写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"));
}
}

任何帮助都将不胜感激。

2 个答案:

答案 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 ,它解决了错误。

感谢您的帮助