我正在使用Java JNI
加载native dll
模块(64 bit JVM, 64 bit dll, Windows 8.1
)。模块用于使用H.264
将libavcodec
文件解码为字节数组,该文件位于预编译的共享dll中。
当我在普通的JNI中玩游戏时(将String
传递给JNI并返回byte[]
),加载我的DLL模块没有问题。但是当我添加对avformat.dll
的引用时,我的dll将不会加载导致unsatisfied link error: Can´t find dependant libraries
。
我使用avformat
确定了DependencyWalker
的范围。这取决于advapi.dll
,这取决于几个报告为缺失的dll。他们是API-MS-WIN-CORE-KERNEL32-PRIVATE-L1-1-1.DLL
。我的Win安装上真的没有这个dll。
所以,现在我对两件事感到困惑:
1,为什么MS提供的advapi.dll
依赖于不属于系统的dll?
2,当我以前尝试以独立的Win32应用程序(exe)的形式使用avformat
库时,DependencyWalker
报告了相同的缺失dll,但它执行已解码的帧没有任何问题。如果我错过了它的依赖性,这怎么可能呢?