1

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

更新

我尝试了里奇的所有建议

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

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

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

它说

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

如果我在 MATLAB 中运行代码,一切正常。只是当我从 Java 运行时,DLL 没有加载。

4

2 回答 2

2

我在 Matlab 论坛上发布了这个问题,终于得到了一些答案。对于以后遇到同样问题的人,请参阅此链接。

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

于 2011-07-11T21:28:51.653 回答
0

问题可能出在很多地方,而且您的示例不可重现,因此很难回答。为了追根溯源,我们需要找出问题所在,并缩小错误的根源。这里有一些可以尝试的东西。

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

如果您不调用 DLL,您的 MATLAB 代码会运行吗?(也许是假的电话,现在让它返回一个号码。)

你可以在你的 JAVA 项目中调用 DLL 中的其他方法吗?

于 2011-07-08T13:58:28.703 回答