【发布时间】:2015-10-12 01:59:48
【问题描述】:
我是 C# 的初学者,我最近构建了一个 Windows 窗体应用程序 GUI,它执行 MATLAB 函数的方式与here 给出的答案大致相同。所以本质上是使用 Process.Start 方法在后台运行 MATLAB 函数。
这适用于 32 位编译的 MATLAB 函数,但是从 WFA GUI 执行时将函数编译为 64 位可执行文件会导致错误 - “找不到 MCR 的 8.2 版。尝试加载 mclmcrrt8_2 .dll。”
如果我在 WFA GUI 之外运行编译的函数,我没有问题。所以看起来 WFA 无法执行 64 位进程,是否有解决方法?
感谢您的帮助。
【问题讨论】:
-
看来 WFA 无法执行 64 位进程 不,你可以运行任何你想要的(32 位从 64 位或 64 位从 32 位)所以问题在其他地方(依赖项?工作目录?)
-
我尝试卸载 32 位 MCR 并将 64 位 MCR 在“Program Files”和“Program Files (x86)”文件夹之间移动,但均无济于事。我的印象是,使用 Process.Start 方法执行进程实际上与独立于 GUI 运行进程相同,因此该函数在自行执行时能够运行但无法运行是没有意义的在 WFA 中执行时找到 MCR?关于任何依赖关系,我没有为 32 位函数定义任何可以正常工作的函数......
-
这个有点奇怪,但似乎问题已经在后台以某种方式解决了。当我尝试运行 64 位 Matlab 编译的应用程序(仅使用 Matlab 构建,即没有 C# WFA)时,我在另一台机器上再次遇到了类似的问题,即使它已安装在 Program Files 中,它也无法再次看到 MCR文件夹。然而,重要的是要注意在测试应用程序之前已卸载 Matlab 本身的安装。在 Program Files (x86) 中再次安装 MCR 会导致应用正常运行。
标签: c# matlab visual-studio-2012 matlab-deployment