vs2010+matlab R2013a+win7 32bit 混合编程

来源:互联网 发布:淘宝代运营哪家好 编辑:程序博客网 时间:2024/06/14 18:38

1 在matlab命令行中 mex -setup 选择vc++ 10.0 编译器(路径就是D:\program files\Microsoft Visual Studio 10.0)

                                     mbuild -setup 选择vc++ 10.0 编译器(路径就是D:\program files\Microsoft Visual Studio 10.0)

2 配置环境变量 在系统变量中path中配置vc和matlab的位置D:\Program Files\matlab2013\runtime\win32;D:\Program Files\Microsoft Visual Studio 10.0;D:\Program Files\matlab2013\bin

3 在matlab中准备m文件如下

 function [ c ] = MyAdd( a , b )
c = a + b;

end 

  在命令行输入deploytool  选择c++  shared Library 然后将要编译的m文件add进去,之后build即可生成dll lib h文件

4之后按照http://blog.csdn.net/cjl19880906/article/details/12177641中的环境变量配置vs2010的环境

5 在vs中编写测试函数

 #include "stdafx.h"
#include <iostream>
#include "engine.h"
#include "mclmcrrt.h" //加上这个库文件mclInitializeApplication函数才可以运行
#include "mclmcr.h"
#include "mclcppclass.h"
#include "MyAdd.h"

using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{

if (!mclInitializeApplication(NULL,0)) //开始应用的函数否则不能初始化dll文件
{
cout<< "could not initialize the application properly"<< endl;
exit(1);
}
if(!MyAddInitialize())
{
//initilize failed!!!"<<std::endl;
std::cout<<"错误..."<<std::endl;
return -1;

}

cout<<"hello world"<<endl;
double a = 6;

double b = 9;

double c;
mwArray mwA(1, 1, mxDOUBLE_CLASS);

mwArray mwB(1, 1, mxDOUBLE_CLASS);

mwArray mwC(1, 1, mxDOUBLE_CLASS);

cout<<"111111111"<<endl;
mwA.SetData(&a, 1);

mwB.SetData(&b, 1);
cout<<"2222222222222"<<endl;
MyAdd(1, mwC, mwA, mwB);
cout<<"3333333333333"<<endl;
c = mwC.Get(1,1);
cout<<c<<endl;
MyAddTerminate();
mclTerminateApplication();

system("PAUSE");
return 0;
}
6 错误提示 无法找到程序入口 将相应的dll文件(bin)拷到工程目录下

7在编程实现时,传递图像,可能由于通道数的不同结果会出错,这时候可以传递图像所在的路径进行传递,在图像显示的时候如果都是一片黑,可能是double数字太小,不能显示出来,这时可以将double数据乘以255,转成uint型显示出来。


1 0
原创粉丝点击