1

我有一个问题:我在 Matlab 中创建了一个函数,我想在asp.net.
它在32-bit机器上工作正常,但是当我将它转移到64-bit机器上时它不工作。

Matlab-dll 与机器asp.net上的网站集成64-bit会出现异常,但不会在32-bit机器上出现。

背景

我正在尝试学习如何将 Matlab 代码集成到 C# 中。我正在使用 Matlab R2010a 和 Visual Studio 2010。我从 Matlab File Exchange 下载了一个教程并执行了代码的 Matlab 部分。

但是,当我尝试在 Visual Studio 中编译 C# 代码时,出现以下错误:

无法加载文件或程序集 'MWArray, Version=2.9.1.0, Culture=neutral, PublicKeyToken=e1d84a0da19db86f' 或其依赖项之一。该系统找不到指定的文件。

一个快速的谷歌搜索把我带到了这个 mathworks 页面,它指示我将目标处理器更改为 x86。

但是,一旦这样做,我就会收到一个新错误:

System.BadImageFormatException 未处理

Message="无法加载文件或程序集 'MWArray, Version=2.0.0.0, Culture=neutral, PublicKeyToken=e1d84a0da19db86f' 或其依赖项之一。尝试加载格式不正确的程序。"

我的 MatLab 版本是 64 位的,但我仍然遇到这个问题。有解决方法吗?

4

1 回答 1

2

尝试使用这个

从 C# 创建的应用程序被编译为托管代码,这使得它们独立于平台(例如 Java)。因此,当您在 32 位机器上编译 C# 应用程序,然后将其部署到 64 位机器上时,默认情况下,它将尝试作为 64 位应用程序运行。然后,它将尝试查找 MWArray.dll 的 64 位版本,如果失败,将显示上述错误。

要解决此问题,请在编译 C# 应用程序之前将选项“属性 -> 构建 -> 平台目标”设置为“x86”而不是“任何 CPU”。这将使应用程序在 64 位机器上以 32 位模式启动。

于 2013-08-22T04:11:28.047 回答