1 平台
我采用的平台:
Matlab版本R2015b(32位)(备注:R2013b版本的工具包目前国内使用的破解版本,破解不完全,不支持混合编程,切记,其余版本不知道)。
Microsoft Visual Studio版本:2010(32位),这个软件版本没有太多要求。
2 MATLAB部分
该部分主要是说明Matlab生成DLL调用文件。
2.1配置Matlab 的编译器
1. 在MATLAB 的命令窗口中输入mbuild –setup 会弹出:
(这是我已经配置好的)
未配置的时候,会弹出
在弹出的选择项中,使用默认的[y](直接回车就是选择默认值),让Matlab 自动搜索可用的编译器。如果只安装了vs2010(如果未安装,请先安装),会弹出可选编译器为:
选择 1 回车
选择y 回车
至此,配置完成。
2.2Matlab写算法
这一部分不过多赘述,只以一个简单的示例进行说明。算法1:矩阵与其转置矩阵相乘的代码
function [result,m,n] = GetSelfMultiplyResult(list)
% 计算矩阵与其转置矩阵的乘积
% 测试返回多个结果
result = list*list';
[m,n] = size(result);
End
算法2:矩阵各元素平方运算
function result = GetSelfSquareResult(list)
% 计算矩阵各元素平方后的结果
result = list.^2;
end
2.3Matlab生成dll文件
1.应用程序里面找到Library Compiler应用程序。
2.进入Library Compiler工程应用界面
3.配置如下
1)选择目标类型(TYPE);
2)添加需要打包的函数文件;
3)重命名库名称。
(注:Class1 改的名字不能与Matlab 的函数名字一样)4.文件生成
CalcMatResult.dll CalcMatResultNative.dll 两个dll文件,均可使用。
3 C#部分
3.1添加DLL文件
C#端用到的就是MWArray.dll 和GetSelResult.dll 这两个DLL文件。
MWArray.dll 在matlab安装目录中,参考路径:
3.2演示代码
3.2.1调用引用DLL文件
两个Matlab标准库,一个生成的Matlab算法;
3.3源代码编写
具体编程细节不在展示。
3.4结果对比C#运算结果
Matlab运算结果
结果是一致的。
4 一些注意事项
https://www.doczj.com/doc/765597517.html,框架版本问题
创建新项目的时候,需要注意.NET版本问题,因为如果新建的项目.NET版本和Matlab转化的DLL .NET版本不一致的话,会出现DLL调用不过去的现象,报错说明是,未添加**引用。
图1 图2
图1是在新建项目的时候选取的是.NET 2.0版本,然而Matlab生成的DLL 是.NET 4.0,因此会在运行的时候报错(报错如下)。