【发布时间】:2015-10-31 07:16:52
【问题描述】:
当我试图编译我的程序时,我得到了这个/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
地牢.h
namespace dng {
char** genDungeon();
void clrDungeon(char**);
class Dungeon {
//Methods and variables
}
}
地牢.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.cppg++ -std=c++11 -c Dungeon.cpp然后链接它们,但得到了同样的错误。可能是什么问题?
【问题讨论】:
-
我正在投票重新打开它。原标题有duplicate的味道,但问题其实是对
using namespace的误解。 -
@Борис Кот Такие вопросы лучше задавать на ru.stackoverflow.:)
-
@zenith 我搜索了很多,但没有找到类似的东西。而且您的链接似乎无法解决我的问题。
标签: c++ c++11 scope namespaces function-declaration