C++ libconfig未定义对libconfig::Config::Config()的引用
我正在尝试构建一个游戏引擎,我已经转向libconfig来处理我所有的配置需求。我正在构建一个资产管理器,它将使用libconfig解析的配置文件来加载图像、声音等 我试图编译这个项目时遇到了一个问题。这是导致错误的代码区域:C++ libconfig未定义对libconfig::Config::Config()的引用,c++,compiler-errors,linker,undefined-reference,libconfig,C++,Compiler Errors,Linker,Undefined Reference,Libconfig,我正在尝试构建一个游戏引擎,我已经转向libconfig来处理我所有的配置需求。我正在构建一个资产管理器,它将使用libconfig解析的配置文件来加载图像、声音等 我试图编译这个项目时遇到了一个问题。这是导致错误的代码区域: AssetManager::AssetManager(GameEngine *engine){ _engine = engine; _config = new Config(); // <-- ERROR ( this is line 5 ) stri
AssetManager::AssetManager(GameEngine *engine){
_engine = engine;
_config = new Config(); // <-- ERROR ( this is line 5 )
string path = string(ASSET_DIRECTORY);
path += "assets.cfg";
try {
_config->readFile( path.c_str() ); //<-- ERROR ( this is line 11 )
} catch ( const FileIOException &fioex ){
cout << "File exception" << endl;
} catch ( const ParseException &pex ){
cout << "Parse exception" << endl;
}
}
AssetManager.o: In function 'AssetManager':
/home/sean/Code/C++/Ridiculous/src/engine/AssetManager.cpp:5: undefined reference to 'libconfig::Config::Config()'
/home/sean/Code/C++/Ridiculous/src/engine/AssetManager.cpp:11: undefined reference to 'libconfig::Config::readFile(char const*)'
AssetManager.o:(.gcc_except_table+0x40): undefined reference to 'typeinfo for libconfig::ParseException'
AssetManager.o:(.gcc_except_table+0x44): undefined reference to 'typeinfo for libconfig::FileIOException'
当我第一次尝试使用libconfig时,我使用我的系统的包管理器(apt-get,我在Ubuntu 11.10上)下载了这个包。这不起作用,所以我尝试从项目主页下载并安装库。同样的错误
作为参考,这里是make试图用来编译它的一行代码(这是最后的编译阶段——将所有内容链接在一起以生成主可执行文件):
g++-g-O2-Wall-Isrc/engine/include-Isrc/engine/include/render-Isrc/engine/include/logic-I/usr/include-DVERSION=\'0.1\'-DPROG=“\'Program Name\'”-I/usr/include/SDL-D\u GNU SORCE=1-D\u可重入-L/usr/lib-lSDL-lSDL\u image-lconfig++-o programmm main.o engine.o AssetManager.o RenderEngine.o Log.o
在过去的几个小时里,我一直在努力想办法解决这个问题。似乎找不到任何东西,通过谷歌,所以,或随机尝试调试我自己。不走运
<>我感觉我缺少了一些超基本的东西,可能是我对C++的限制(但不断增长)的知识可能是问题所在。或者也许我只是胖手指。我真的不确定
非常感谢您的帮助!(如果我弄明白了,我会发布答案)
旁注:我试图用“libconfig”来标记这个,但显然这个标记不存在,而且我还没有足够的声誉来创建它
编辑
原来这是我的自动生成/配置设置的问题。在我的Makefile.am中,我使用了LDFLAGS+=
而不是LIBS=
。显然,这(以及一个良好的睡眠)会带来巨大的不同
*掌纹*
g++-g-L/usr/lib-lSDL-lSDL_image-lconfig++-o programmmain.o
上面的命令行完全是假的。库和对象在链接行上的顺序,您使用的顺序与应该使用的顺序相反。您能够编译并运行libconfig附带的示例程序吗@你给我指明了正确的方向。结果证明我的makefile不正确(好吧,makefile.am)。这就是我一直在努力的方向,在尝试新库的同时学习自动生成/配置工具链。