我正在开发游戏,并试图使用子弹。但是,(似乎)我在链接项目符号库时遇到问题。编辑2:我有my code on github
这实际上是我第一次使用cmake。我搜索了FindBullet.cmake文件,可以找到用于链接库的变量($ {BULLET_LIBRARIES}),但是链接该变量中的库没有任何作用。
find_package(Bullet REQUIRED)
include_directories(${BULLET_INCLUDE_DIR})
target_link_libraries(3DPlatformer ${BULLET_LIBRARIES})
我希望我的代码可以编译,但是我得到了一堆“未定义引用”,然后从它读取的项目符号中提取了任何函数。 编辑:
more undefined references to `btAlignedAllocInternal(unsigned long, int)' follow
^那就是我得到的一堆
collect2: error: ld returned 1 exit status
这是最后一个错误。 Full Error
答案 0 :(得分:0)
libbullet-dev
需要安装。
sudo apt-get install libbullet-dev
答案 1 :(得分:0)
我的问题是我的一个if语句损坏了。 我的if语句:
if(USE_SYSTEM_BULLET)
find_package(Bullet REQUIRED)
include_directories(${BULLET_INCLUDE_DIR})
target_link_libraries(3DPlatformer ${BULLET_LIBRARIES} -lGL -lGLU)
else(USE_SYSTEM_BULLET)
add_subdirectory("${PROJECT_SOURCE_DIR}/lib/bullet" )
include_directories("${PROJECT_SOURCE_DIR}/lib/bullet/src")
endif(USE_SYSTEM_BULLET)
某种程度上触发了所有代码,而不是其中的一些。像这样注释代码:
#if(USE_SYSTEM_BULLET)
find_package(Bullet REQUIRED)
include_directories(${BULLET_INCLUDE_DIR})
target_link_libraries(3DPlatformer ${BULLET_LIBRARIES} -lGL -lGLU)
#else(USE_SYSTEM_BULLET)
# add_subdirectory("${PROJECT_SOURCE_DIR}/lib/bullet" )
# include_directories("${PROJECT_SOURCE_DIR}/lib/bullet/src")
#endif(USE_SYSTEM_BULLET)
修复了该问题。