Неопределенная ссылка на символ, даже если библиотека связана

При связывании проекта, над которым я работаю, компоновщик выдает следующие ошибки:

/usr/bin/ld: ../Includes and Libs/lib/libsfml21rca.a(SoundFile.o): undefined reference to symbol '[email protected]@libsndfile.so.1.0'

/usr/bin/ld: note: '[email protected]@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

Спасибо за помощь заранее

РЕДАКТИРОВАТЬ:

Вот команда связывания:

g ++ -L "Включает и Libs / lib" -L "Включает и Libs / lib / raknet3_731" -L "включает и Libs / lib / d3d_new / x86" -L "Включает и Libs / 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 "../Включает и Libs / lib / raknet3_731 / RakNetLibStaticDebug.lib "" ../Includes и Libs / lib / libsfml21rca.a "../../../../../../home/msabol/Desktop/SFML/sfml2st/sfmlVideo/sfmlVideo/ bin / Release / libsfmlVideo.a ../../../../../../home/msabol/Desktop/SFML/sfmlVideo/bin/Release/libsfmlVideo.a

 user52975819 июл. 2013 г., 11:35
 Matuzalem19 июл. 2013 г., 11:59
@ H2CO3 Я учту это.
 greatwolf19 июл. 2013 г., 10:46
Добавьте команду, которую C :: B использует для ссылки на ваш вопрос. (не добавляйте это как комментарий!)
 Matuzalem19 июл. 2013 г., 10:43
Как именно я должен изменить это? Все связано в правильном порядке, или, по крайней мере, так кажется.
 PP.19 июл. 2013 г., 10:40
Попробуйте изменить порядок ссылок?

Ответы на вопрос(1)

Решение Вопроса

если у вас есть что-то в библиотеке A, что нужно в библиотеке B, вам нужно иметьg++ objects... -llibA -llibB, если вы используетеg++ objects... -llibB -llibA это не получится так, как вы показываете.

Итак, в вашем случае, положить-lsndfile после"../Includes and Libs/lib/libsfml21rca.a".

(И чья это была идея поместить пробелы в каталог «Includes and Libs» - не лучшая идея, которую я видел ...)

 Matuzalem19 июл. 2013 г., 11:08
@greatwolf К сожалению, моя работа - заставить проект работать на платформах Unix. Так много для MicrosoftLINK.
 Mats Petersson19 июл. 2013 г., 11:09
Это открытый исходный код, я уверен, что патч будет приветствоваться ... Хотя я подозреваю, что это может где-то сломать - или, по крайней мере, если бы это было действительно легко исправить без недостатков, кто-то исправил бы это.
 Matuzalem19 июл. 2013 г., 11:01
Я сделаю это. В свою защиту, я запрыгнул на этот проект несколько дней назад, поэтому все ужасные имена (их больше) не были сделаны мной.РЕДАКТИРОВАТЬ: Черт возьми, это сработало! Спасибо, Матс Петерсон.
 greatwolf19 июл. 2013 г., 11:05
@ Честно говоря, я считаю, что единственный проход по библиотеке более отвратителен. Там были бесчисленные ТАК вопросы, как ОП все из-заld ограничение линкера. от MicrosoftLINK инструмент не имеет этой проблемы, например. И Эмбаркадеро тоже не любит.

Ваш ответ на вопрос