我正在开发一个使用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:\Users\AUG\Documents\Backup\SourceTracing\epanet2.dll"**
FAiled..Error using ==> loadlibrary at 477
Undefined function or variable 'epanet2_proto'.
There was an error loading the library
"C:\Users\AUG\Documents\Backup\SourceTracing\epanet2.dll"
Error in ==> epanetloadfile at 31
Undefined function or variable 'epanet2_proto'.
Error in ==> sourceTraceGUI at 8
当我实际检查地址时,DLL文件与该目录中的头文件一起存在。
更新
我尝试了所有Richie的suggestions。
我可以运行在MATLAB上使用DLL的方法。
我可以从Java调用任何不使用DLL的常规方法。
我甚至可以调用使用DLL的方法,但是当应该加载库时会出现问题。
它说
Error using ==> loadlibrary at 477
There was an error loading the library
"C:\Users\AUG\Documents\Backup\SourceTracing\epanet2.dll"
如果我在MATLAB中运行代码,它一切正常。就在我从Java运行时,DLL无法加载。
答案 0 :(得分:2)
我在Matlab论坛上发布了这个问题,最后得到了一些答案。对于将来遇到同样问题的人,请参阅此链接。
http://www.mathworks.com/matlabcentral/answers/11321-loading-a-dll-in-mathlab-through-java
答案 1 :(得分:0)
问题可能存在很多地方,而且您的示例不可重现,因此很难回答。为了解决这个问题,我们需要解决问题,并缩小错误的来源。以下是一些可以尝试的事情。
您可以直接运行MATLAB建模代码,包括运行对DLL的调用吗?
如果不调用DLL,您的MATLAB代码是否会运行? (也许假冒电话,现在让它返回一个号码。)
你可以在你的JAVA项目中调用DLL的其他方法吗?