2

libfaad2 の jna マッピングを作成しようとしています。ライブラリは、mp4 ファイルの解析に mp4ff を使用します。mp4ff は、Windows では libmp4ff.lib に、Linux では libmp4ff.a にコンパイルされます。JNA は .dll/.so ファイルのみを検索します。では、このmp4ffをjnaにロードするにはどうすればよいですか?

編集

この質問には答えがあると思います。私は AAC が嫌いです。ffmpeg を使用して無効なメモリ アクセスのデバッグに 4 日間を費やしました。現在、libfaad はいくつかの奇妙なライブラリを使用しています。:(

4

1 に答える 1

5

私はあなたがこれの答えがここに関連しているということは正しいと思います。UNIXタイプのシステムでは、.aファイルは特殊なタイプのアーカイブであり、アプリケーションに静的にリンクすることしかできないライブラリを保持します(.libファイルはWindowsでも同じように聞こえます)。つまり、ダイナミックライブラリが必要になるため、実行時にそのライブラリをロードする方法はありません。ただし、これはJNAの制限ではなく、ほとんどのオペレーティングシステムの動作の一般的な制限であることに注意してください。

静的ライブラリは結果の実行可能ファイル(またはライブラリ)の「一部」になりますが、動的ライブラリは実行時にロードできます。それぞれに長所と短所があります(たとえば、静的ライブラリは、存在する正しいバージョンの他のライブラリに依存しないことでアプリケーションをより自給自足にしますが、ダイナミックライブラリはディスクとメモリの両方のスペースと単一のライブラリを節約できますセキュリティまたはその他のバグ修正パッチがある場合に更新するファイル)。私が見たほとんどのソフトウェアは、静的または動的(共有)ライブラリの両方にコンパイルできるので、どこかで探しているものが見つからなかった場合(または自分でコンパイルした場合)は驚きます。

于 2009-08-14T12:40:11.693 に答える