当链接我正在处理的项目时,链接器给出以下错误:
/usr/bin/ld: ../Includes and Libs/lib/libsfml21rca.a(SoundFile.o): undefined reference to symbol 'sf_read_short@@libsndfile.so.1.0'
/usr/bin/ld: note: 'sf_read_short@@libsndfile.so.1.0' is defined in DSO /usr/lib/gcc/i686-linux-gnu/4.6/../../../i386-linux-gnu/libsndfile.so so try adding it to the linker command line
/usr/lib/gcc/i686-linux-gnu/4.6/../../../i386-linux-gnu/libsndfile.so: could not read symbols: Invalid operation
问题是,libsndfile.so 已经在 libsfml21rca.a 之前链接,所以我不知道问题出在哪里。
我正在使用 Code::Blocks 10.05
感谢您提前的帮助
EDIT:
这是链接命令:
g++ -L"包括和库/lib" -L"包括和库/lib/raknet3_731" -L"包括和库/lib/d3d_new/x86" -L"包括和库/lib/ogg" -L"包括和Libs/lib/sdl" -LBullet/lib -o (文件名) ...(大量目标文件) -lGLEW -lglfw -lGL -lGLU -lpthread -lopenal -ljpeg -lfreetype -lsndfile -lXrandr -lsfml-system -lsfml-window -lsfml-audio ../Bullet/lib/LinearMath.lib ../Bullet/lib/BulletCollision.lib ../Bullet/lib/BulletDynamics.lib“../包括和库/lib/raknet3_731/ RakNetLibStaticDebug.lib" "../包括和库/lib/libsfml21rca.a" ../../../../../../home/msabol/Desktop/SFML/sfml2st/sfmlVideo/sfmlVideo/ bin/Release/libsfmlVideo.a ../../../../../../home/msabol/Desktop/SFML/sfmlVideo/bin/Release/libsfmlVideo.a
链接器仅对库文件运行一次。因此,如果库 A 中的某些内容需要库 B 中的某些内容,则您需要g++ objects... -llibA -llibB
,如果你使用g++ objects... -llibB -llibA
它会以你所展示的方式失败。
所以,在你的情况下,把-lsndfile
after "../Includes and Libs/lib/libsfml21rca.a"
.
(他的想法是在“包含和库”目录中放置空格 - 这不是我见过的最好的想法......)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)