libconfig未定义对libconfig::Config::Config()的引用
libconfig undefined reference to libconfig::Config::Config()
我正在尝试构建一个游戏引擎,我已经转向libconfig来处理我的所有配置需求。我正在构建一个资产管理器,它将使用libconfig解析的配置文件来加载图像、声音等。
当我试图编译这个项目时,遇到了一个问题。这是导致错误的代码区域:
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_GNU_SORCE=1 -D_REENTRANT -L/usr/lib -lSDL -lSDL_image -lconfig++ -o programm main.o Engine.o AssetManager.o RenderEngine.o Log.o
在过去的几个小时里,我一直在用头撞墙,试图弄清楚这一点。似乎找不到任何东西,通过谷歌,SO,或者随机尝试自己调试。运气不好。
我有一种感觉,我错过了一些超基础的东西,可能只是我对C++的有限(但正在增长!)知识可能是问题所在。或者我只是胖手指什么的。我真的不确定。
非常感谢您的帮助!(如果我弄清楚了,我会公布答案)。
附带说明:我试图用"libconfig"标记它,但显然那个标记不存在,而且我还没有足够的声誉来创建它。
编辑
事实证明这是我的自动生成/配置设置的问题。在我的Makefile.am中,我有LDFLAGS+=
而不是LIBS=
。显然,这(以及一个良好的睡眠)会带来巨大的不同。
*facepalm*
g++-g-L/usr/lib-lSDL-lSDL_image-lconfig++-o program main.o…
上面的命令行完全是假的。链接行上的库和对象的顺序很重要,您使用了相反的顺序。
- CMake项目Boost库错误:Boost/config/compiler/gcc.hpp:165:10:致命错误:cs
- "assimp/config.h"找不到,但它在文件夹中
- 编译 llvm 插件时出现问题:llvm/Config/llvm-config.h:没有这样的文件或目录
- cmake boost find_depedency Config
- mingw32_gt_pch_use_address中的内部错误,在config/i386/host-mingw32.c
- 使用 C++ 显示 C:\Windows\System32\config 的内容
- Opencv4 使用 pkg-config 给出未定义的引用错误
- 使用 libconfig 导入数组或列表设置
- CONFIG += c++11(仍然)在Linux上不起作用
- Cygwin pkg-config/protobuf filepath issues
- 如何在Visual Studio Code中使用'pkg-config gtkmm-3.0 --cflags --lib
- 从函数返回 libconfig 类设置对象引用
- C Shogun库:无法找到Shogun/lib/config.h文件
- 当 pkg-config 不能解决 opencv 'undefined reference'编译问题时,如何解决它?
- 使用LibConfig库的CMAKE编译问题
- 创建 ./config.data 在编译 Mozilla Firefox 时失败
- 如何修复"无法打开包含文件'boost/config.hpp':没有这样的文件或目录(包括目录涵盖:C:\程序文件\boost\boost_1_67_0)
- 没有规则来制作目标'src/main/jni/Build.config'。停
- 如何在CMAKE(JUCI )中使用PKG-Config
- libconfig未定义对libconfig::Config::Config()的引用