2009-08-14 67 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