更新:问题在 MathWorks 的帮助下得到了解决。我已经在下面发布了答案。
我需要从 Matlab 控制一个程序(Zemax)。不幸的是,Zemax 只支持 DDE 进行这种控制,Matlab 不再支持。它可以工作,但在几次(可能是 63 次)DDE 调用后停止在 64 位平台上工作。
我想知道是否有可行的解决方案。我可以编写一个具有正确 DDE 支持的 DLL,然后通过这个 DLL 在 Matlab 中使用 DDE。这对我来说是一项重大的努力。更合适的解决方案是使用 Java DDE 方法。在这里的另一篇文章之后,我发现了 JDDE 库。但是我不能让它工作:即使我在包含 DLL 和 JAR 文件的目录中,执行
import pretty-tools.JDDE-2.0.3.*
工作正常,但打电话
a = com.pretty_tools.dde.client.DDEClientConversation()
之后(如此处所做)导致
Undefined variable "com" or class "com.pretty_tools.dde.client.DDEClientConversation".
我在 PC 上的写入权限非常有限,因此我将javaclasspath.txt
带有 jar/dll 位置的文件添加到prefdir
. 该文件如下所示:
C:\Users\xxxxxxxx\Documents\matlab toolbox\jdde\pretty-tools-JDDE-2.0.3.jar
调用javaclasspath
显示了一个长列表,最后几行是:
...
C:\Program Files\MATLAB\R2012b\java\jarext\webservices\ws_client_core\mw-service-client-core.jar
C:\Users\kkarapet\Documents\matlab toolbox\jdde\pretty-tools-JDDE-2.0.3.jar
DYNAMIC JAVA PATH
<empty>
所以路径似乎设置正确。我究竟做错了什么?