Windows 8 上的 Matlab 构建器 NE / MCR

Posted

技术标签:

【中文标题】Windows 8 上的 Matlab 构建器 NE / MCR【英文标题】:Matlab builder NE / MCR on Windows 8 【发布时间】:2013-07-25 15:53:31 【问题描述】:

我已经使用 Matlab R2012a 将一些 matlab 函数编译成 .net DLL 文件。一切正常。我在 Windows 7 64 位上使用 WPF/C# .net 4.5,我的程序运行正常。

但是,我们现在正在 Windows 8 pro 上传输和测试我们的程序。我们在运行时遇到问题 - 我们当然使用 MCR R2012a 来运行 .dll 文件。 我们无法在win8中加载类或函数,我们的程序崩溃了。

有人遇到过这个问题吗?如果我们使用 Matlab R2013a 编译函数会有帮助吗?

【问题讨论】:

了解程序崩溃时的一些行为会很有帮助。是否有任何线索,例如独特的错误、特定的退出代码、事件日志中的任何内容等? 是的。出现错误:Managed (v4.0.30319)' has exited with code -1073741819 (0xc0000005) 'Access violation'。 鉴于错误的性质,您是否确保运行它的帐户对应用程序将使用的任何文件夹具有完全访问权限?我还将查看右键单击该程序并选择“以管理员身份运行”是否有帮助。可能是在 Win8 上,试图在这种情况下做某事会绊倒一个稍微敏感的 UAC 系统。请确认您是否尝试过这些方法。 【参考方案1】:

在windows 8下matlab问题的解决方法是添加

[assembly: MathWorks.MATLAB.NET.Utility.MWMCROption("-nojit")]

在汇编文件中。

我不知道为什么会这样。 nojit- 表示不是创建二进制文件的即时编译器。

但是当我添加了这个。它也适用于 Windows 8 x64。具有相同的 MCR

【讨论】:

【参考方案2】:

我在使用 MCR 时遇到的大多数问题都与 PATH 变量的错误值有关。当您在一台计算机上安装多个 MCR 时会发生这种情况,有时甚至在您只安装一个时也会发生这种情况。由于您收到访问冲突错误,我猜系统可以找到 MCR dll,但它会找到错误的(例如 32 位而不是 64 位)。仔细检查您的 PATH 环境变量并确保它指向 MCR dll 的正确位置。

【讨论】:

我知道这个问题,但是这在 Windows 7 x64 中完全有效,并且不适用于 win 8 x64 上的相同配置。相同的 MCR R2012a X64。 在matlab初始化的时候会立即失败(当你第一次创建生成的类的实例时)还是只有在调用方法时才会失败? 第一次加载类时失败。 你可以通过投票来思考我的答案:) 我在使用 MatLab 时遇到了类似的问题,问题是 PATH 变量末尾的“\”符号。我最终看到了有关各种 MatLab dll 初始化问题的神秘消息。

以上是关于Windows 8 上的 Matlab 构建器 NE / MCR的主要内容,如果未能解决你的问题,请参考以下文章

将python嵌入到os x上的matlab mex文件中

Windows Phone 8.1 的预处理器常量

Matlab中如何实现灰度膨胀和灰度腐蚀?

Windows 上的 Matlab:将“mex”默认编译器更改为 Cygwin 的 GCC [重复]

使用 MatLab2013a 的 MacOS 10.8.4 上的 Java 错误

WPF 窗口设计器上的对齐网格