当前位置: 首页 > 知识库问答 >
问题:

C++在包含Irrlicht静态库时的编译错误

汪才
2023-03-14

当试图将Irrlicht静态库包含到我的cmake项目中时,您出现了一个编译错误

max@max-MS-7369:~/Desktop/survival/build$ make Scanning dependencies   of target survival
[ 33%] Building CXX object    src/CMakeFiles/survival.dir/technic.cpp.o
[ 66%] Building CXX object   src/CMakeFiles/survival.dir/render.cpp.o
[100%] Building CXX object    src/CMakeFiles/survival.dir/survival.cpp.o
Linking CXX executable    ../debug/survival
/usr/bin/ld:    ../../irrlicht/lib/Linux/libIrrlicht.a(CIrrDeviceLinux.o): undefined   reference to symbol 'XConvertSelection'
/usr/bin/ld: note:    'XConvertSelection' is defined in DSO    /usr/lib/gcc/x86_64-linux-gnu/4.6/../../../x86_64-linux-gnu/libX11.so  so try adding it to the linker command line
/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../x86_64-linux-gnu/libX11.so: could not read symbols: Invalid operation
collect2: ld returned 1 exit status
make[2]: *** [debug/survival] Error 1
make[1]: ***    [src/CMakeFiles/survival.dir/all] Error 2
make: *** [all] Error 2
max@max-MS-7369:~/Desktop/survival/build$
# find dependencies for irrlicht
FIND_PACKAGE(ZLIB)
FIND_PACKAGE(X11)
FIND_PACKAGE(OpenGL)
# includes
set( survival_CUSTOM_INCLUDES
    ${ZLIB_INCLUDE_DIR}
    ${X11_INCLUDE_DIR}
    ${OPENGL_INCLUDE_DIR}
    ${survival_SOURCE_DIR}/irrlicht/include
    )
# libraries
set( survival_CUSTOM_LIBRARIES
    ${ZLIB_LIBRARIES}
    ${X11_LIBRARIES}
    ${OPENGL_LIBRARIES}
    ${survival_SOURCE_DIR}/irrlicht/lib/Linux/libIrrlicht.a
    )

我不明白为什么它说它找不到XConvertSelection,尽管我已经包含了X11库。

共有1个答案

葛承教
2023-03-14

我加了那两个libs来修复它

/usr/lib/x86_64-linux-gnu/libX11.so
/usr/lib/x86_64-linux-gnu/libXxf86vm.so.1

它们由FIND_PACKAGE()提供的lib包含

 类似资料:
  • 问题内容: 我试图将静态库(与gcc一起编译)链接到C 程序,但出现了“未定义引用”。我在ubuntu 12.04服务器计算机上使用了gcc和g 版本4.6.3。例如,这是阶乘方法的简单库文件: mylib.h mylib.c 我使用gcc为此mylib.c创建了对象: 再次使用AR实用工具从目标文件创建了静态库: 我用C程序(test.c)和C ++程序(test.cpp)测试了这个库 C和C

  • 我们检查一下PHP语言中get_loaded_extensions()函数的输出,会发现有一些扩展并没有php.ini文件中调用,而它们确实也已经加载到PHP里去了,可以让我们在PHP语言中使用,如standard、Reflection、Core等。它们便是静态编译的,它们没有被编译成so或者dll文件供PHP动态调用,而是直接和PHP主程序编译到一起。 在*nix上执行静态编译 现在,先让我们执

  • 问题内容: 我在Ubuntu(arm-linux-gnueabi- gcc)中有一个ARM交叉编译器,默认体系结构是ARMv7。但是,我想编译一个ARMv5二进制文件。我通过为编译器提供选项来实现。 到目前为止,一切都很好。由于我的ARM系统使用BusyBox,因此必须编译静态链接的二进制文件。所以我给gcc 选项。 但是,链接器链接到我的ARMv5二进制文件的 libc.a 出现问题。该文件使用

  • 我有以下代码: 我希望它输出“0,1,2,3”并停止,但它输出的是一系列无穷无尽的“0、1、2、3、4、5……” 看起来比较< code>di 如果我只是注释掉< code >,delta=mc[di],我会正常得到“0,1,2,3”。无辜作业有什么问题? 我正在使用Ideone.com g14带-O2选项。

  • 问题内容: 我想修改setup.py文件,以便命令“ python setup.py build”编译基于C的扩展模块,该模块静态(而非动态)链接到库。 该扩展程序当前动态链接到许多库。除了静态链接到一个库外,我想保留所有内容。我已经成功地通过手动修改了对distutils运行的gcc的调用来完成了此操作,尽管它要求我明确列出相关库。 也许这是太多信息,但是为了清楚起见,这是在“ python s