MinGWg++コンパイラでコンパイルされたwxWidgetsを使用してプロジェクトを構築しています。また、wxWidgetsプラットフォームのコンポーネントを使用してmp3サウンドクリップを再生していましたが、信頼性が低いため、別の解決策を探しました。私はaudiereを見つけ、彼らのWebサイトからバージョン1.9.4をダウンロードしました。パッケージには、*。libファイルと*.dllが含まれていました。これをプロジェクトに追加しようとしましたが、機能しません(ダウンロードしたパッケージがMSVCでコンパイルされているためだと思います)。
lib2aというツールを使用して*.defファイルを作成し、MSVClibからMinGWで使用できる.alibに変換しました。defファイルにはこれらの定義があります...
ライブラリー "audiere.dll" EXPORTS _AdrCreateLoopPointSource @ 4 _AdrCreateMemoryFile @ 8 _AdrCreatePinkNoise @ 0 _AdrCreateSampleBuffer @ 20 _AdrCreateSampleBufferFromSource @ 4 _AdrCreateSquareWave @ 8 _AdrCreateTone @ 8 _AdrCreateWhiteNoise @ 0 _AdrEnumerateCDDevices @ 0 _AdrGetSampleSize @ 4 _AdrGetSupportedAudioDevices @ 0 _AdrGetSupportedFileFormats @ 0 _AdrGetVersion @ 0 _AdrOpenCDDevice @ 4 _AdrOpenDevice @ 8 _AdrOpenFile @ 8 _AdrOpenMIDIDevice @ 4 _AdrOpenSampleSource @ 8 _AdrOpenSampleSourceFromFile @ 8 _AdrOpenSound @ 12 _AdrOpenSoundEffect @ 12
プロジェクトをリンクしようとすると、次のエラーが発生します。
* MinGWUnicodeRelease / AlphaPanel.o:AlphaPanel.cpp:(。text + 0x8291):
_imp__AdrOpenDevice@8' *** MinGWUnicodeRelease/AlphaPanel.o:AlphaPanel.cpp:(.text+0x82db): undefined reference to
imp _AdrOpenSampleSource@8'への未定義の参照* MinGWUnicodeRelease/ AlphaPanel.o:AlphaPanel.cpp:(。text + 0x830f):_imp__AdrOpenSound@12' *** MinGWUnicodeRelease/AlphaPanel.o:AlphaPanel.cpp:(.text+0x87ce): undefined reference to
imp_AdrOpenDevice @への未定義の参照8' * MinGWUnicodeRelease / AlphaPanel.o:AlphaPanel.cpp:(。text + 0x8818):_imp__AdrOpenSampleSource@8' *** MinGWUnicodeRelease/AlphaPanel.o:AlphaPanel.cpp:(.text+0x884c): undefined reference to
imp _AdrOpenSound@12'への未定義の参照
たとえば私のコードでは、関数は「OpenDevice」です...defファイルでは>「_AdrOpenDevice @ 8」ですが、未定義の参照リンクエラーでは「imp_AdrOpenDevice @8」です。だから私の頭は回転していて、この時点で何をすべきかわからない。
dllの名前マングリングの問題を修正する簡単な方法はありますか?
おそらく、バイナリエディタで編集して名前を「修正」し、これを既存のコードで機能させることができます(MinGWを使用して[可能であれば]再コンパイルしてdllを作成するためにaudiereコード全体をダウンロードすることはできません...避けたい可能であればこれ)...私の出発点は* .libファイルとMSVCで作成されたdllですが、MinGWで使用する必要があります。
誰かがこれを行う方法について何か手がかりがありますか?