кодовые блоки — ошибка звука Crr IrlanKlang — CreateIrrKlangDevice () приводит к неопределенной ссылке на (очень длинная ссылка)

Недавно я скачал звуковую библиотеку Irrklang для использования с моими программами на C ++. Чтобы проверить это, я установил и связал библиотеку в настройках компилятора Code :: Block и в настройках сборки моих проектов.
Однако всякий раз, когда я пытаюсь построить & запустите следующий код:

#include <irrKlang.h>
using namespace std;
using namespace irrklang;
int main(){
ISoundEngine* engine = createIrrKlangDevice();
}

Вкладка «Построение сообщений» выдает следующую ошибку:

|Line 5|undefined reference to`_imp___ZN8irrklang20createIrrKlangDeviceENS_21E_SOUND_OUTPUT_DRIVEREiPKcS2_'|

А вот ошибка на вкладке «Журнал сборки»:

64bit-1.5.0\lib\Winx64-visualStudio\irrKlang.lib"obj\Debug\main.o: In function `main':
C:/Users/Johnny/Desktop/Python/Learner/main.cpp:5: undefined reference to _imp___ZN8irrklang20createIrrKlangDeviceENS_21E_SOUND_OUTPUT_DRIVEREiPKcS2_'
collect2.exe: error: ld returned 1 exit status
Process terminated with status 1 (0 minute(s), 0 second(s))
1 error(s), 0 warning(s) (0 minute(s), 0 second(s))

Я должен сказать вам, что я впервые загружаю и использую библиотеку с C ++. Я использовал этот урок: http://www.learncpp.com/cpp-tutorial/a3-using-libraries-with-codeblocks/

Я посмотрел эту ошибку в Google, и в то время как люди с такой же проблемой подходят, все решения, которые они получили, либо слишком расплывчаты, либо их сообщение об ошибке было вызвано другой ошибкой.

Вот несколько страниц, которые я просмотрел:

http://www.ambiera.com/forum.php?t=939

Я просмотрел больше, чем только этот, в основном на одном форуме, но я могу опубликовать не более двух ссылок, и я решил, что более важно, чтобы вы могли рассказать, как я связал библиотеку.

0

Решение

Вы пытаетесь связать C ++ DLL (или, скорее, экспорт LIB DLL)
это было сделано с помощью MS Visual Studio C ++ в программе, которую вы строите с помощью GNU C ++.

Вы не можете сделать это по нескольким причинам, самая простая из которых заключается в том, что
Компиляторы MS и GCC используют различные соглашения об именовании для символов C ++. таким образом
ваш компилятор искажает irrklang::createIrrKlangDevice как:

ZN8irrklang20createIrrKlangDeviceENS_21E_SOUND_OUTPUT_DRIVEREiPKcS2_

в целях связывания, но в библиотеке экспорта, которую вы пытаетесь связать,
экспортируется как:

createIrrKlangDevice@irrklang@@YAPEAVISoundEngine@1@W4E_SOUND_OUTPUT_DRIVER@1@HPEBD1@Z

Тот факт, что установленный вами пакет irrKlang хранит эту библиотеку экспорта
в irrKlang-64bit-1.5.0\lib\Winx64-visualStudio намек на то, что это только
совместим с 64-битной инструментарием Visual Studio для Windows.

Чтобы связать 64-битный irrKlang.dll с 64-битной программой, которую вы создаете с помощью цепочки инструментов GNU вы
должен был бы получить irrKlang Исходный код и перестроить DLL с вашим
GNU toolchain. Я не верю, что исходный код общедоступен. Иначе
Вы можете создать только 64-битную программу с помощью Visual Studio.

Если вы довольны созданием 32-битной программы (которая будет работать в 64-битной Windows),
тогда вы можете использовать 32-битную версию irrKlang 1.5. Это содержит
32-битные статические и динамические библиотеки, которые были собраны с 32-битным GCC и
проживать в подпапках под названием win32-gccв отличие от Winx64-visualStudio,

1

Другие решения


По вопросам рекламы [email protected]