提问人:Jeremy Hahn 提问时间:11/11/2023 最后编辑:JaMiTJeremy Hahn 更新时间:11/11/2023 访问量:47
无法将库链接到 G++ 项目...我错过了什么吗?
Can't Link a Library to a G++ project... Am I missing something?
问:
所以这有点奇怪,我确信我在做一些愚蠢的事情。
我有一个正在处理的项目,并且我已经成功地将几个库链接到了该项目。但是,我现在正在尝试将音频库链接到项目,但它遇到了问题,即似乎该库没有正确链接。有问题的库是irrKlang,这里是cmake文件:
cmake_minimum_required(VERSION 3.23)
project(ProjectName)
set(CMAKE_CXX_STANDARD 14)
add_executable(ProjectName main.cpp Includes.h Defines.h)
target_link_libraries(ProjectName F:/Combustible/cmake-build-debug/libCombustible.a mingw32 opengl32 glu32 gdi32
F:/Combustible/Dependencies/Libraries/DevIL.lib F:/Combustible/Dependencies/Libraries/ILU.lib F:/Combustible/Dependencies/Libraries/ILUT.lib
F:/Combustible/Dependencies/Irrklang/lib/libirrKlang.a)
文件路径正确,所有其他库在连接时都没有问题。此外,irrKlang 确实有一个版本可以根据他们的网站与 gcc 一起使用,并且是我尝试使用的版本。我的编译器版本是:g++ 11.2
以下是 Cmake 的输出:
F:/ProjectName/main.cpp:50: undefined reference to `__imp__ZN8irrklang20createIrrKlangDeviceENS_21E_SOUND_OUTPUT_DRIVEREiPKcS2_'
collect2.exe: error: ld returned 1 exit status
尽管我所有其他库都运行正常,但我还是无法弄清楚这个问题,老实说,我真的无法在网上找到任何资源来提供帮助。从各方面来看,正如所写的那样,它应该可以工作,除非我遗漏了什么,甚至尝试以前的版本。我不指望这里的任何人都是这个库的专家,只是想我也许可以再看一双 Cmake,看看我是否做错了什么。我的预感是编译器正在寻找的符号和库包含的符号由于某种原因不匹配,但在他们的网站上提到它是 gcc 兼容的。就其价值而言,我在 fmod 上也遇到了同样的问题。
最后一点:该库确实带有一个 .def 文件,但我从来没有弄乱过这些文件,所以我不确定这是否是我无法链接的原因。此外,该库是 32 位库,我的编译器是 64 位库,但我认为这不会犯任何错误,因为我的所有其他库也是 32 位但没有问题。
提前致谢!
像链接过的所有其他库一样链接库。我以为它不会吐出一个未定义的引用。
答: 暂无答案
评论
gcc -v