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

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

2014-04-18 14:08 141 查看
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型显示出来。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: