1
4
你熟悉吗 Process Monitor 是吗?(如果不是的话,你很容易就会知道它是如何工作的)。 下载它。运行它。只需启用“显示文件系统活动”(菜单栏右下方的小图标),即可禁用其他图标。
然后启动导致库尝试加载dll的任何内容。后
现在,执行ctrl+f并搜索它应该加载的dll的名称。检查(可能是多个)条目,在结果列中注明“找不到”或“找不到名称”,在路径列中注明dll名称。 现在检查它真正查找dll的位置。也许它附加了一些额外的路径或类似的路径,因此找不到它。 |
2
4
在Matlab文档中发现了这个: 指定Sun Java本地方法DLL的搜索路径 Matlab用来定位Java所需的本地方法库的机制已经发生了变化。Matlab不再使用系统环境变量来定义这些库的路径。 兼容性注意事项 如果您目前依赖路径(用于Windows)或ld_library_path(用于Unix)环境变量来实现此目的,则需要使用文件library path.txt,如下所述。 指定Java库路径 Java类可以使用Java方法Java.Lang.Stase.Load LooCube(“LIbFrm”)动态加载本机方法。为了使JVM软件定位指定的库文件,包含它的目录必须在Java库路径上。此路径是在matlab启动时启动jvm软件时建立的,它基于文件的内容 $matlab/toolbox/local/librarypath.txt(英文) (其中$matlab是matlab关键字matlab root表示的matlab根目录)。 您可以通过编辑librarypath.txt文件来增加本机方法库的搜索路径。编辑此文件时,请遵循以下准则:
|
3
1
将尝试使用java.lang.system.loadlibrary加载的dll放入以下目录: $MatabRoo\\sys \java\jRe\Win??\jre\bin\ |
4
0
您的库是否依赖其他DLL?可能是由于DLL Java加载它的LoopRealBug()调用,所以需要其他DLL。在Windows上,我相信它会在%path%上查找这些DLL。 这并不是严格意义上的Java事务,而是与正在加载的本机库有关。 Java被告知通过Java.Labal.PATH(或者其他任何Matlab使用的机制)来查找DLL,并且LBNAME.DLL将使用%PATH %来查找它依赖的任何DLL。 正如您所说,缺少的dll在java.library.path中,也许您可以尝试将java.library.path值附加到%path%并重试? |
S1mple · 通过gcc生成64位共享库时的“未定义的主引用” 2 年前 |
hepl · gcc如何决定在创建可执行文件时使用dynamics库? 2 年前 |
Altair · 使用共享库版本支持不同ABI的最佳实践是什么? 6 年前 |
user2577547 · 如何将zstd库静态链接到动态库? 6 年前 |
arc_lupus · 阻止从其他程序执行库中的函数 6 年前 |