Я создаю проект, используя wxWidgets, скомпилированный с компилятором MinGW g ++. Я также использовал компонент платформы wxWidgets для воспроизведения аудиоклипов mp3, но он был ненадежным, поэтому я пошел искать другое решение. Я нашел audiere и скачал версию 1.9.4 со своего сайта. Пакет содержит файл * .lib и * .dll. Я пытался добавить это в свой проект, но он не работает (я думаю, потому что пакет, который я загрузил, был скомпилирован в MSVC).Как использовать dll audiere с MinGW
Я создал файл * .def с помощью инструмента lib2a для преобразования из библиотеки MSVC в .a lib, который я мог бы использовать с MinGW. Файл Защиту имеет эти определения ...
БИБЛИОТЕКА "audiere.dll" ЭКСПоРТ _AdrCreateLoopPointSource @ 4 _AdrCreateMemoryFile @ 8 _AdrCreatePinkNoise @ 0 _AdrCreateSampleBuffer @ 20 _AdrCreateSampleBufferFromSource @ 4 _AdrCreateSquareWave @ 8 _AdrCreateTone @ 8 _AdrCreateWhiteNoise @ 0 _AdrEnumerateCDDevices @ 0 _AdrGetSampleSize @ 4 _AdrGetSupportedAudioDevices @ 0 _AdrGetSupportedFileFormats @ 0 _A drGetVersion @ 0 _AdrOpenCDDevice @ 4 _AdrOpenDevice @ 8 _AdrOpenFile @ 8 _AdrOpenMIDIDevice @ 4 _AdrOpenSampleSource @ 8 _AdrOpenSampleSourceFromFile @ 8 _AdrOpenSound @ 12 _AdrOpenSoundEffect @ 12
Когда я иду, чтобы связать мой проект, я получаю следующие ошибки:
* MinGWUnicodeRelease/AlphaPanel.o:. AlphaPanel.cpp :(текст + 0x8291): неопределенная ссылка на
[email protected]' *** MinGWUnicodeRelease/AlphaPanel.o:AlphaPanel.cpp:(.text+0x82db): undefined reference to
имп _AdrOpenSampleSource @ 8' * MinGWUnicodeRelease/AlphaPanel.o:. AlphaPanel.cpp :(текст + 0x830f): неопределенная ссылка на[email protected]' *** MinGWUnicodeRelease/AlphaPanel.o:AlphaPanel.cpp:(.text+0x87ce): undefined reference to
имп _AdrOpenDevice @ 8' * MinGWUnicodeRelease/AlphaPanel.o: AlphaPanel . .cpp :(текст + 0x8818): неопределенная ссылка на[email protected]' *** MinGWUnicodeRelease/AlphaPanel.o:AlphaPanel.cpp:(.text+0x884c): undefined reference to
имп _AdrOpenSound @ 12'
в моем коде, например, функция является "OpenDevice" ... в защиту это за файл> "_ AdrOpenDevice @ 8 ", но в моей неопределенной ссылке ссылка error это" i mp _AdrOpenDevice @ 8 ". Так что моя голова вращается и не уверен, что делать в этот момент.
Есть ли простой способ исправить проблему с изменением имени в dll?
Возможно, отредактировать его с помощью двоичного редактора, чтобы «исправить» имена и заставить их работать с моим существующим кодом (не загружая весь код audiere, чтобы перекомпилировать и создать dll [если возможно] с помощью MinGW ... Я хочу избежать этого, если смогу) ... отправной точкой является файл * .lib и dll, созданный в MSVC, но мне нужно использовать его в MinGW.
У кого-нибудь есть подсказки о том, как это сделать?
Это отличный ответ. – dk123