无法通过Java在MATLAB中加载DLL

unable to load a DLL in MATLAB through Java

本文关键字:MATLAB 加载 DLL Java      更新时间:2023-10-16

我正在开发一个使用MATLAB代码进行计算的Java GUI应用程序。但是,MATLAB代码本身使用DLL文件。我将所有MATLAB函数打包到一个类中,并创建了一个jar文件。

我在Java项目的项目根文件夹中添加了C头文件和DLL文件,并在属性中添加了包含MATLAB代码的jar。然而,当我调用的方法,它似乎执行,但它无法加载DLL文件。

下面是我得到的错误信息:

{??? Error using ==> loadlibrary at 477
There was an error loading the library
**"C:UsersAUGDocumentsBackupSourceTracingepanet2.dll"**
FAiled..Error using ==> loadlibrary at 477
Undefined function or variable 'epanet2_proto'.
There was an error loading the library
"C:UsersAUGDocumentsBackupSourceTracingepanet2.dll"
Error in ==> epanetloadfile at 31
Undefined function or variable 'epanet2_proto'.
Error in ==> sourceTraceGUI at 8

当我实际检查地址时,DLL文件以及头文件也在该目录中。

我试了Richie的所有建议。

  1. 我可以在MATLAB上运行使用DLL的方法

  2. 我可以从Java调用任何不使用DLL的普通方法。

  3. 我甚至可以调用使用DLL的方法,但是问题发生在应该加载库时。

上面写着

Error using ==> loadlibrary at 477
There was an error loading the library
"C:UsersAUGDocumentsBackupSourceTracingepanet2.dll"

如果我在MATLAB中运行代码,它都工作得很好。只是当我从Java运行时,DLL没有加载。

我在Matlab论坛上发布了这个问题,最终得到了一些答案。如果以后有同样的问题,请参考这个链接。

http://www.mathworks.com/matlabcentral/answers/11321-loading-a-dll-in-mathlab-through-java

问题可能出现在很多地方,而且您的示例不可复制,因此很难回答问题。为了弄清问题的根源,我们需要拆解问题,缩小错误的来源。以下是一些可以尝试的方法。

可以直接运行MATLAB建模代码,包括运行对DLL的调用吗?

如果你不调用DLL,你的MATLAB代码运行吗?(也许不调用,只是让它现在返回一个数字。)

你可以调用其他方法从DLL,窗体在您的JAVA项目?