编译包含 TCPIP 的脚本后的 Matlab 未知类错误

Posted

技术标签:

【中文标题】编译包含 TCPIP 的脚本后的 Matlab 未知类错误【英文标题】:Matlab Unknown class error after compiling script containing TCPIP 【发布时间】:2017-05-05 20:05:03 【问题描述】:

我使用 MCR_R2015a 编译了一个使用仪器工具箱中的 tcpip 函数的脚本。在我用于编译的PC(Windows7)上运行生成的可执行文件不是问题,但是在另一台PC(Windows10,未安装Matlab)上运行它是。我收到以下错误:

unknown variable com or unknown class com.mathworks.toolbox.instrument.TCPIP

指向tcpip 中的第 123 行。周边代码为:

try
    obj.jobject = handle(com.mathworks.toolbox.instrument.TCPIP(host,port));
catch aException
    newExc = MException('instrument:tcpip:cannotCreate',aException.message);
    throw(newExc);        %%% this is line 123
end

显然com.mathworks.toolbox.instrument.TCPIP 是未知的。我试图找到定义此对象的文件以在编译失败时附加它。

在哪里可以找到该文件或如何编译正在运行的可执行文件?

【问题讨论】:

更新:在第二台PC(Win10)上安装Matlab后,在Matlab中运行脚本没有问题。然后,我再次使用 MCR_R2015a 在第二台 PC 上编译了另一个可执行文件。运行生成的 exe 我收到与上面相同的错误。 【参考方案1】:

由于我能够在 Matlab 中运行脚本,但不能使用 Matlab 编译器运行时运行可执行文件,因此我认为 MCR 中未设置的路径可能会导致错误。

如果定义了 TCPIP 类的路径,则无法找到该文件,我最终卸载了 MCR。等等,它成功了!

我知道这个解决方案没有回答如何编译包含tcpip 函数的脚本并在没有安装 Matlab 的 PC 上运行生成的 exe 的问题。但这对我来说已经足够了。

【讨论】:

以上是关于编译包含 TCPIP 的脚本后的 Matlab 未知类错误的主要内容,如果未能解决你的问题,请参考以下文章

标头包含标准 C++ 库后的未定义符号

编译后的 Matlab 函数只工作一次

Debian系统中如何将matlab编译后的代码集成到c++中

未选择 /clr 时编译的 Matlab 代码崩溃

如何为指定的 Matlab 运行时 (MCR) 编译 Matlab 脚本

Matlab Mex代码未编译