无法通过Java在MATLAB中加载DLL

时间:2011-07-07 15:05:09

标签: java c++ matlab dll matlab-deployment

我正在开发一个使用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文件与该目录中的头文件一起存在。

更新

我尝试了所有Richiesuggestions

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

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

  3. 我甚至可以调用使用DLL的方法,但是当应该加载库时会出现问题。

  4. 它说

    Error using ==> loadlibrary at 477
    There was an error loading the library
    "C:\Users\AUG\Documents\Backup\SourceTracing\epanet2.dll"
    

    如果我在MATLAB中运行代码,它一切正常。就在我从Java运行时,DLL无法加载。

2 个答案:

答案 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的其他方法吗?