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型显示出来。
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型显示出来。
相关文章推荐
- win7(32bit)使用outlook发送带附件邮件时,对方收到winmail.dat的解决办法
- Win7(32bit)下Qt5.5.0和OpenCV2.4.9环境的搭建
- win7 32bit下安装mysql server
- win7(32bit)下安装mongodb
- win7(32bit)php+mysql+apache开发环境搭建
- win7(32bit)、VS2010环境下配置OpenGL的方法
- oracle 10g在win7 32bit下面的安装
- 想在win7 32bit的情况下装个64位虚拟机的想法
- 64 位 win7(2008 r2) 使用PLSQL Developer x86 32bit的解决方法
- WIN7 32bit + VS2012 下配置 OpenCV2.4.5
- 图解Win7下构建OpenJDK7u40 32bit调试环境
- win7(32bit)+vs2008+opnet14.5安装教程
- win7(64bit)/XP(32bit) 配置VS2008+openv2.3.1
- 32bitwin7,vs2010下配置CSparse
- 64 位 win7(2008 r2) 使用PLSQL Developer x86 32bit的解决方法
- 论文排版:win7 32bit + Latex 配置
- 32bit win7用上8G以上内存,附教程
- 一个简单的Object Hook的例子(win7 32bit)
- Win7 64bit下32bit的 ODBC 数据源问题
- 虚拟机(win7-32bit)与主机(ubuntu14.04-64bit)实现同一个网络