VC6.0学习(三)调用MatLab 生成动态链接库

本人想在win10操作系统下通过VC6.0引用MATLAB生成的dll文件,这个过程遇到了很多的坑,这里总结一下具体的过程。

  1. MATLAB生成.dll
    这个过程主要可以在网上参考一些文章关于“ VC三种方法用C++调用Matlab”。方法没有问题,关键问题出在了C++ sdk的问题上,因为老一些的MATLAB版本只支持sdk7.1,而这个版本的sdk要在win10系统之前的版本,而在win10操作系统下配置sdk7.1就比较麻烦了。在win10操作系统下使用sdk10相对就方便的多,这样我们就要选择支持sdk10的MATLAB版本,通过官网查看可以查看,要选择2017及其更高的版本。选择了正确的版本我们就可以顺利的解决这个问题了。
  2. VC6.0引用MATLAB的.dll
    这里按照网上相关攻略操作就出现新的状况了,无法正常引用。经过反复查找问题,发现还是兼容的问题,VC6.0是32位,然而MATLAB2017b只有64位,所以通过这个版本调用的引擎和库就无法在VC中识别。
    最后我将自己写好的程序移到了win7,MATLAB2015bwin32的环境后成功编译,确定了是兼容性的问题。

总结

使用VC6.0的话还是在win7下配置相应的环境比较简单;如果要用win10,那么需要解决以上两个问题,关键是要配置sdk7.1和安装MATLAB win32的版本。
下面给一个连接,关于实现matlab与vc混合编程,写的不错,https://wenku.baidu.com/view/e081894ee518964bcf847c62.html
但是存在一点问题,我最终是用MATLAB2015bwin32实现的,直接套用它出现了一点问题,贴一下我的代码以供参考:

//matlab 求和函数函数
function [c]=Add(a,b)
c=a+b;
end
//VC 中的实现函数
void CTestDlg::OnButton1() 
{

	if( !mclInitializeApplication(NULL,0) ) 
	{ 
		AfxMessageBox("Could not initialize the application.\n"); 
	}

	if(!AddInitialize()) 
	{ 
		AfxMessageBox("Can’t Initalize!");
	} 
mwArray a(1,1,mxDOUBLE_CLASS,mxREAL);
mwArray b(1,1,mxDOUBLE_CLASS,mxREAL);
mwArray c(1,1,mxDOUBLE_CLASS,mxREAL);
double data1=2;
double data2=3;
a.SetData(&data1,1);
b.SetData(&data2,1);
Add(1,c,b,a);
double result=c.Get(1,1); 
CString str2; 
str2.Format("Y=%f",result); 
AfxMessageBox(str2);
}

如果有更好的方法,欢迎讨论!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值