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

VS2012Matlab2016b dll文件混合编

2017-02-07 21:00 197 查看
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 <stdio.h>  

#include <iostream>  

#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;  

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