dll依赖项的问题
我今天读了一篇博文,对其中的部分内容表示怀疑,还请大牛们鉴定。
博文部分内容:
在Java中使用System.LoadLibrary(String)方法可以加载动态链接库(类似Win32 API LoadLibrary函数)。
如果加载的动态链接库文件需要静态链接到其它动态链接库,例如TestJNI.dll静态链接到dependency.dll,LoadLibrary方法可能会在加载TestJNI.dll时因为找不到依赖项dependency.dll而导致加载失败。
"TestJNI.dll静态链接到dependency.dll",这句话存在问题吗?
查找依赖项dependency.dll的任务应该由谁完成?是LoadLibrary吗?还是TestJNI.dll?
[解决办法]
确实没有听说的,
静态链接到动态库。
只听过显示和隐式链接。
”TestJNI.dll时因为找不到依赖项dependency.dll“
这得看在TestJNI.dll里面是使用绝对地址还是相对地址了。
一般用相对地址,则由系统自己查找。
[解决办法]
Windows:用depends.exe查看exe依赖的dll
Linux:用ldd命令查看可执行文件依赖的.so