vc 调用 matlab 引擎,VC++与Matlab混合编程之引擎操作详解

MATLAB与VisualC++结合的方法有多种,但其实用程度与范围不同。常用的方法有: (1)将Matlab程序编译成C/C++源文件并嵌入VC++;(2)在C/C++程序中利用Matlabengine调用Matlab函数;(3)在C/C++程序中直接使用MatlabC/C++MathLibrary;(4)将.m文件编译成*.dll文件嵌入到VC++的程序中。基于实用性、易用性的考虑,本文主要讨论第四种方法。另外随着Matlab版本的升级,原来的mathlibrary已经并入了Compiler之中,是否是mathworks比较推崇DLL的方式呢?本文通过一个简单的例子来说明Matlab和VC++混编的具体过程(环境为Matlab6.5&VC++6.0)。 1Matlab编译环境的设置 为了能够使用Matlab的Complier将*.m函数文件编译为动态链接库DLL,必须对Matlab的环境做出相应的配置。具体做法如下: 在Matlab的CommandWindow下输入命令mbuild–setup,并根据Matlab的提示选择合适的编译器,笔者使用的是MicrosoftVisualC++.过程如下 >>mbuild-setup PleasechooseyourcompilerforbuildingstandaloneMATLABapplications: Wouldyoulikembuildtolocateinstalledcompilers[y]/n? Selectacompiler: [1]LccCversion2.4inD:\MATLAB6P5\sys\lcc [2]MicrosoftVisualC/C++version7.0inC:\ProgramFiles\MicrosoftVisualStudio.NET [3]MicrosoftVisualC/C++version6.0inD:\MicrosoftVisualStudio [0]None Compiler:3 Pleaseverifyyourchoices: Compiler:MicrosoftVisualC/C++6.0 Location:D:\MicrosoftVisualStudio Arethesecorrect?([y]/n): 然后,在CommandWindow中输入命令cd(prefdir);mccsavepath;这是为了后面使用Matlab在VC++IDE中的Add-in作准备。然后输入命令mex–setup,以类似的方法配置编译器。至此,Matlab的配置完成。如有疑问,可以参阅Matlab的帮助MatlabCompiler\GettingStarted\Installationandconfiguration一节。 2创建动态链接库(*.DLL) 创建动态链接库主要有两种方法:一种是使用Matlab为VC++IDE提供的Add-in。这种方法比较简单,方便快捷,只要在VC++中创建工程的时候选择MatlabProjectWizard,并且在接下来的Step1中的VisualMatlabApplicationType选择SharedM-DLL就可以了。接下来就是添加*.m文件,进行编译了。另一种方法就是使用Matlab的mcc命令将*.m文件编译为动态链接库(*.DLL)。因为Add-in也是调用Compiler的命令mcc进行编译工作的,而且有时候这个Add-in还会出现不能使用的情况,因此这里主要讨论使用mcc命令的方法。 关于mcc有很多参数可以使用,而且有多种用法,具体的可以参见Matlab的帮助。 这里我们使用命令mcc–Bcsglsharedlib:youlibnamefunction1funcion2…来创建我们所需要的动态链接库DLL文件。其中参数-B表示使用的是BundleFiles作为参数csglsharedlib是-B的参数,意思是生成使用Matlab图形库的C共享动态链接库,youlibname是你想要生成的动态链接库DLL的文件名,注意csglsharedlib与youlibname之间有一个冒号“:”连接,function1为你想要加入到动态链接库DLL中的函数名,如果有多个函数,各个函数名用空格隔开。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值