2009-08-14 17 views
2

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

EDIT

。私はAACが嫌い、ffmpegで無効なメモリアクセスをデバッグするのに4日を費やしました。今ではlibfaadはいくつかの奇妙なライブラリを使用しています。 :

答えて

5

ここで答えがthisであると思いますが、UNIX形式のシステムでは、.aファイルは、アプリケーションに静的にしかリンクできないライブラリを保持する特殊なアーカイブです.libというファイルのようなものはWindows上のものと同じです)つまり、動的ライブラリが必要になるため、実行時にそのライブラリをロードする方法はありません。しかし、これはJNAの制限ではなく、

静的ライブラリは結果として得られる実行可能ファイル(またはライブラリ)の「一部」になりますが、実行時には動的ライブラリを読み込むことができます。それぞれのメリットとデメリットがあります(たとえば、静的ライブラリmake a複製は、他のライブラリが存在しないようにして、より適切なバージョンにすることで自立しますが、動的ライブラリは、ディスクやメモリのスペースと、セキュリティやその他のバグ修正パッチがあれば、更新する単一のファイルを節約できます。私が見たほとんどのソフトウェアは、静的ライブラリと動的(共有)ライブラリの両方にコンパイルすることができるので、あなたがどこかで探しているものを見つけられなかったり、自分でコンパイルできないと驚いています。

+0

お返事ありがとうございます。私はdllをコンパイルして動作します。 –