【问题标题】:Running a 64-bit compiled MATLAB function from c#从 c# 运行 64 位编译的 MATLAB 函数
【发布时间】: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


【解决方案1】:

您不能在同一台机器上同时安装 MATLAB 和 MCR,并在已部署的应用程序上始终如一地运行。

如果同时安装了 x32 和 x64 MCR,我没有任何运气,但是您可以安装不同版本的 MCR,尽管这不是最佳选择。

如果您部署了 x64 MCR 的 MATLAB,则必须在您的 c# 应用程序中使用 x64。

这没有明确记录,根据我的经验,这些都是部署相同的 MATLAB 基础作为 COM DLL、x32 .NET 程序集和 x64 C++ 共享库。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-21
    • 1970-01-01
    • 1970-01-01
    • 2016-06-30
    • 1970-01-01
    • 2019-02-06
    • 2017-08-01
    • 2013-10-20
    相关资源
    最近更新 更多