VS2012Matlab2016b dll文件混合编

Matlab作为矩阵实验室,在算法设计上具有显著的优越性,然而在Matlab平台上编写的算法不能直接应用在C语言中。混合编程提供了二者的接口,加速了程序开发速度。下面介绍Matlab 与 VS2012 混合编程方法。

1. 打开Matlab,设置编译器:

输入 "mex -setup" 在命令窗口输出中 选择合适的编译器,本文中选择VS2012.

2. 输入“deploytool”,在随后弹出的窗口中选择“library compiler”, matlab启动dll生成程序。在程序界面中选择“+”号,输入.m文件,点击‘package’,打包生成dll文件。

3. 为VS正常调用dll文件设置环境变量

在环境变量设置界面“path”中增加以下内容:

C:\Program Files\MATLAB\R2016b\runtime\win64;

C:\Program Files\MATLAB\R2016b\extern\lib\win64\microsoft;

C:\Program Files\MATLAB\R20156b\bin\win64

4. 将VS编译方式设置为Release X64模式并为VS 增加包含文件和库

在VC++ 目录中 包含文件添加“Matlab安装目录\extern\include;

库文件添加 Matlab安装目录\extern\include\lib\win64\microsoft;
链接器接入中 写入以下内容:

libmat.lib

libmex.lib

mclmcr.lib

mclmcrrt.lib

libemlrt.lib

libeng.lib

libfixedpoint.lib

libcovrt.lib

5. 新建VS工程,将2中生成的 .dll 文件,h 文件, .lib 文件复制到工程目录下.
6. 测试源码
#include "stdafx.h"  
#include  
#include  
#include "mclmcr.h"  
#include "matrix.h"  
#include "mclcppclass.h"  
#include "ImageRead.h"  
using namespace std;  
#pragma comment(lib,"ImageRead.lib")  
   
int _tmain(int argc,_TCHAR* argv[])  
{  
   
char filename[] = "G:\\VS\\2_6\\ConsoleApplication1\\ConsoleApplication1\\lena.jpg";
    if(!ImageReadInitialize())    //初始化  
    {  
        printf("Could not initialize addfunction!");  
        exit(0);  
    }  
    printf("OK!");  
mxArray *t=NULL;
t = mxCreateString(filename);
    mlfImageRead(t);
Sleep(5000);
    ImageReadTerminate();  


    return 0;  
}  

你可能感兴趣的:(VS2012Matlab2016b dll文件混合编)