在Matlab中创建共享库(.NET程序集)并在C#中使用它
我使用Application Compiler在Matlab(2014a)中创建了一个.NET程序集,我正在尝试在C#下使用它。
matlab模块只有1个function:
function [ val ] = AnalyzePicture( arg1 ) val = 5; end
导出的.NET DLL名为AnalyzePicture.dll并导出Class1(在Matlab应用程序编译器中定义)。 但是,当我尝试初始化它时,我得到一个exception说:
The type initializer for 'MathWorks.MATLAB.NET.Arrays.MWArray' threw an exception
内部例外说:
An attempt was made to load a program with an incorrect format. (Exception from HRESULT: 0x8007000B)
这是代码
using System; using System.Collections.Generic; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using AnalyzePicture; using MathWorks.MATLAB.NET.Arrays; using MathWorks.MATLAB.NET.Utility; namespace Analyzer { public class MatlabWrapper { AnalyzePicture.Class1 analyzer = null; public MatlabWrapper() { try { // The exception is raised here analyzer = new AnalyzePicture.Class1(); } catch (System.Exception ex) { MessageBox.Show("f"); } } ...
我的项目引用了MWArray(8.3,当前版本)和AnalyzePicture dll(以及DirectShowLib-2010)。
我试图在网上找到解决方案,但我找不到一个关于如何在C#中正确使用Matlab .NET程序集的一个很好的例子。 除了我的程序集不是以com.
开头之外,我完全按照本文所述做了com.
关于什么可能导致问题的任何想法? 任何代码示例都会受到极大的关注
(我使用的是Windows 7 64位,Matlab 2014a 8.3 64位)
以防万一其他人会遇到同样的问题。 我不久前遇到了这个问题,所以我想出了完整的解决方案。
您需要将项目设置设置为使用.Net Framework 4.0(而不是4.5 VS 2013设置为默认版本)并将目标平台更改为x64。 此套装在Win 8.1(x64),MatLab R2013a(x64,运行时版本8.1)和Visual Studio 2013上运行良好。
如果您发布了matlab 64位dll,请更改您的VS项目构建设置任何CPU并取消选中“首选32位”属性
上述就是C#学习教程:在Matlab中创建共享库(.NET程序集)并在C#中使用它分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1007325.html