您的位置:首页 > 编程语言 > MATLAB

matlab2010 + vc6.0混合编程实例(调用dll)

2013-09-17 16:22 337 查看
不想解释太多直接上代码吧!!!

在对matlab配置后,上代码mcc -W cpplib:libMyAdd -T link:lib MyAdd -C就可以了,记得加上-C

在对VC6.0进行配置的时候只要把 matlabroot\extern\include和matlabroot\extern\lib\win32\microsoft加入到VC6.0中去了,i.e.可以通过Tools->Options->Directories->show directories for 中的Include
files和library files添加路径;

#include "libMyAdd.h"

#pragma comment(lib, "libMyAdd.lib")
#pragma comment(lib, "mclmcrrt.lib")

using std::cout;
using std::cin;
using std::endl;

int main(void)
{
	double a = 0;
	double b = 0;
	double c = 0;

	// initialize lib 
	if( !libMyAddInitialize())
	{
		cout << "Could not initialize libMyAdd!" << endl;

		return -1;
	}

	cout << "input a: ";
	cin >> a;
	cout << "\ninput b: ";
	cin >> b;

	//为变量分配内存空间
	mwArray mwA(1, 1, mxDOUBLE_CLASS);	//1,1表示矩阵的大小(所有matlab只有一种变量,就是矩阵,
	//为了和CPP变量接轨,设置1*1的矩阵,mxDOUBLE_CLASS表示变量的精度
	mwArray mwB(1, 1, mxDOUBLE_CLASS);
	mwArray mwC(1, 1, mxDOUBLE_CLASS);

	//调用SetData函数赋值
	mwA.SetData(&a,1);
	mwB.SetData(&b,1);

	//调用自己写的函数MyAdd
	MyAdd(1, mwC, mwA, mwB);

	//调用Get函数获取函数返回值
	c = mwC.Get(1,1);

	cout << "c is " << c << endl;

	//后面一些终止调用程序
	libMyAddTerminate();
	
	mclTerminateApplication();
	
	return 0;
}


运行结果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: