我尝试编译我的程序时出现了以下错误:/tmp/ccnL7Yz1.o: In function 'main':
main.cpp:(.text+0x70): undefined reference to 'dng::genDungeon()'
main.cpp:(.text+0xf0): undefined reference to 'dng::clrDungeon(char**)'
collect2: error: ld returned 1 exit status
。在加入命名空间函数之前,它运行得非常好。我使用以下方式进行编译:g++ -std=c++11 main.cpp Dungeon.cpp
Dungeon.h
namespace dng {
char** genDungeon();
void clrDungeon(char**);
class Dungeon {
//Methods and variables
}
}
Dungeon.cpp
#include "Dungeon.h"
using namespace dng;
char** genDungeon()
{
//Stuff
}
void clrDungeon(char** dungeon)
{
//Another Stuff
}
/*Implementation of class methods
void Dungeon::genStart(){} -> like this */
main.cpp
#include "Dungeon.h"
int main ()
{
//Stuff
auto dungeon = dng::genDungeon();
//Stuff
dng::clrDungeon(dungeon);
return 0;
}
我也尝试自己制作.o
文件,使用g++ -std=c++11 -c main.cpp
和g++ -std=c++11 -c Dungeon.cpp
来进行链接,但仍然出现了相同的错误。可能是什么问题呢?
using namespace
的误解。 - Drew Dormann