2009-08-14 64 views
2

我正在嘗試爲libfaad2編寫jna映射。該庫使用mp4ff解析mp4文件。 mp4ff在Windows上編譯爲libmp4ff.lib,在Linux上編譯爲libmp4ff.a。 JNA只會查找.dll/.so文件。那麼如何將mp4ff加載到jna中?JNA加載.a/.lib庫

編輯

我認爲this問題都有了答案。我討厭AAC,我花了4天用ffmpeg調試無效的內存訪問,現在libfaad使用了一些奇怪的庫。 :(

回答

5

我認爲你是正確的,在this答案就在這裏有關。在UNIX類系統,.a文件是一種特殊類型的檔案,認爲只能靜態鏈接到應用程序庫(它聽起來像一個.lib文件在Windows上是一樣的),這意味着在運行時沒有辦法加載這個庫,因爲你需要一個動態庫,但是要知道這不是JNA的限制,它是一個大多數操作系統工作的一般限制

靜態庫成爲結果可執行文件(或庫)的「一部分」,而動態庫可以在運行時加載它們各有優缺點(例如,靜態庫一個由於不依賴於其他庫和正確的版本,應用程序更加自給自足,但動態庫可以節省磁盤和內存空間,並且可以在單個文件更新(如果存在安全性或其他修補程序修補程序時更新)。大多數我見過的軟件都可以編譯爲靜態或動態(共享)庫,所以如果你找不到你想要的地方(或者自己編譯),我會感到驚訝。

+0

感謝您的回答。我編譯了一個DLL,它的工作原理。 – 2009-08-14 13:39:18