环境:

1.VS2010

2.MATLAB 2010b

3.WINDOW 7 (X64)

1.Matlab环境设置

要建立独立运行的C应用程序,系统中需要安装Matlab、Matlab编译器、C/C++编译器以及Matlab C/C++数学库函数和图形库函数。
Matlab编译器使用mbuild命令可以直接将C/C++源代码编译为独立运行程序,在这些源代码中可以使用Matlab提供的接口来调用Matlab数学库函数。
       虽然生成的可执行程序可以脱离Matlab环境运行,但是它需要Matlab C/C++数学库文件或者图形库文件的支持才能运行。但如果C/C++源代码完全是按传统C/C++源代码语法规则编写,没有包含Matlab数学库和图形库的调用,则不仅可以独立与Matlab环境,也不需要那两个库函数的支持。

在 Matlab 的Command Window 下输入命令

  mbuild – setup

操作过程如下图:

然后输入命令

mex – setup

以类似的方法配置编译器。Matlab 的配置完成。

2.VS环境设置

(1)设置Include 和Library 目录

项目右键->属性->VC++目录->包含目录:添加

<MATLAB>\R2010b\extern\include\win64

<MATLAB>\R2010b\extern\include\

项目右键->属性->VC++目录->库目录:添加

<MATLAB>\R2010b\extern\lib\win32\microsoft

<MATLAB>\R2010b\extern\lib\win64\microsoft

(2)设置工程目录

项目右键->属性->C/C++->常规->附件包含目录:添加

<MATLAB>\R2010b\extern\include\win64

<MATLAB>\R2010b\extern\include\

项目右键->属性->链接器->常规:添加

<MATLAB>\R2010b\extern\lib\win32\microsoft

<MATLAB>\R2010b\extern\lib\win64\microsoft

项目右键->属性->链接器->输入->附件依赖性:添加

libeng.lib
    libmat.lib
    libmex.lib
    libmx.lib  

注:1.lib文件包含在<MATLAB>\R2010b\extern\lib\win64\microsoft,可根据需要增减

2.附件依赖性在VS2010前以空格隔开,在VS2010后使用;隔开。

项目右键->属性->链接器->高级->目标计算机:更改(只针对64位WINDOWS)

MachineX86 -> MachineX64

注:分析原因为MATLAB根据计算机平台选择了X64编译环境,如此处不修改会出现 错误3

(3)配置管理器设置(只针对64位WINDOWS)

生成->配置管理器->平台:更改

Win32->X64

注:分析原因为配合链接器中目标计算机的修改,如此处不修改会出现 错误4

截图:

3.系统(Windows)环境设置

   我的电脑->属性->高级系统设置->高级->环境变量->Path,添加:

<MATLAB>\R2010b\bin;<MATLAB>\R2010b\extern\lib\win64\microsoft;<MATLAB>\bin\win64

注:1.Windows7的情况下,“用户变量”和“系统变量”都需 添加,如不添加,运行时会出现 错误5

2.哈哈,别忘记重启哈,重启后生效

OK!配置就此结束,现在就开始engOpen吧!!对了,别忘记添加#include "engine.h"。

附录:错误情况及解决

2.提示:“libeng.lib libmat.lib"无法打开

解决:附件依赖性在VS2010前以空格隔开,在VS2010后使用;隔开。

3.提示:“  "error LNK2019: 无法解析的外部符号 _interp1Initialize,该符号在函..."”

解决:操作如2.VS环境设置中的(2) 项目右键->属性->链接器->高级->目标计算机:更改...及(3)

4.提示:“  "模块计算机类型“X86”与目标计算机类型“x64”冲突..."”

解决:操作如2.VS环境设置中的(3)

4.提示:“ 系统丢失libeng.dll..."”

解决:操作如 3.系统环境设置

1.mbuild – setup后没有“VS2010”选项
解决:MATLAB 2010b 之后包含对VS2010编译器的支持,2010a及之前版本不包含支持。如果MATLAB环境较低,Matlab官方有一个补丁(http://www.mathworks.com/support/solutions/en/data/1-D5W493/?solution=1-D5W493)

 

VS2010与Matlab2010b混合编程的更多相关文章

  1. VS2010和matlab2010混合编程中char16_t重定义的问题

    原因是VS2010中的yvals.h添加了char16_t的定义,而Matlab的matrix.h也包含对char16_t的定义,所以同时包含这两个头文件的话,会导致重复定义char16_t的错误.只 ...

  2. matlab 2012 vs2010混合编程

    电脑配置: 操作系统:window 8.1 Matlab 2012a安装路径:D:\Program Files\MATLAB\R2012a VS2010 : OpenCV 2.4.3:D:\Progr ...

  3. matlab和C/C++混合编程--调用opencv

    最近的我们已经将整个项目搭起来了,项目比较复杂.由于我们做的是检索系统,所以我们用asp.net(c#)做了网页,但是算法的实现是在matlab下,所以我们不得不用matlab生成动态链接库dll,然 ...

  4. matlab和C/C++混合编程--Mex

    最近的项目需要matlab和C的混合编程,经过一番努力终于完成了项目要解决的问题.现在就将Mex的一些经验总结一下,当然只是刚刚开始,以后随着学习的深入继续添加.首先讲讲写Mex的一些常规规定,然后我 ...

  5. C++和C#混合编程

    最近需要利用C++和C#混合编程,然后就写了一个C#调用C++生成的DLL的DEMO.困扰我好久的就是C#中string类型在C++里面怎么表达,现在把C++生成DLL供C#调用的流程写出来. 源码: ...

  6. C#与MATLAB混合编程

    C#和MatLab的混合编程,充分利用了winform的直观显示和matlab的强大计算能力.在此以一个小例子的形式给大家讲述一下二者混合编程的实现. 一.软件的配置说明 C#版本:VS2010 ma ...

  7. matlab和C/C++混合编程--Mex (六)参数传递

    最近的项目需要matlab和C的混合编程,经过一番努力终于完成了项目要解决的问题.现在就将Mex的一些经验总结一下,当然只是刚刚开始,以后随着学习的深入继续添加.首先讲讲写Mex的一些常规规定,然后我 ...

  8. 算法库:Matlab与C++混合编程

    算法库:Matlab与C++混合编程 最近做光流算法预演过程中,下载的源码中涉及到了Matlab和C++的混合编程.在同事Matlab2014的环境下,程序到是一下就运行通过了.但在我这Matlab2 ...

  9. matlab封装DLL混合编程总结

    最近做了个项目要用到matlab做些算法处理,然后用.net项目调用这个类,我把这个matlab封装dll总结了下如下: matlab是商业数学软件,优势是在算法开发上面有很强的功能,提供了很多数学算 ...

随机推荐

  1. Python3列表(list)比较操作教程

    一.相等比较 1.1 同顺序列表比较 顺序相同直接用“==”进行比较即可 list1 = ["one","two","three"] lis ...

  2. java对象深度拷贝

    如何利用序列化来完成对象的拷贝呢?在内存中通过字节流的拷贝是比较容易实现的.把母对象写入到一个字节流中,再从字节流中将其读出来,这样就可以创建一个新的对象了,并且该新对象与母对象之间并不存在引用共享的 ...

  3. linux中pthread_join()与pthread_detach()

    1.linux线程执行和windows不同,pthread有两种状态joinable状态和unjoinable状态, 如果线程是joinable状态,当线程函数自己返回退出时或pthread_exit ...

  4. 跟随我在oracle学习php(12)

    DOM 文档对象模型 body:(什么时候)找到标签 操作标签找到标签:(都会返回一个js对象)document.getElementById() 通过iddocument.getElementsBy ...

  5. mysql语句将日期转换为时间戳的方法

    mysql将日期转换为时间戳更新数据库: update test set creattime=UNIX_TIMESTAMP('2018-04-19') 替换字段为当前日期: update test s ...

  6. webAR涉及的技术

    1.技术体系 1.1技术体系整理   其中绿色底色的代表Demo中表现出的能力比较成熟,可以直接应用.   脑图地址:http://naotu.baidu.com/file/3392a895a9039 ...

  7. Saiku数据库迁移H2迁移到Mysql(二十二)

    Saiku数据库迁移H2迁移到Mysql Saiku默认使用H2数据库来存储saiku的用户与角色信息,我们可以根据角色来做saiku的权限控制,然后将角色分配给用户 ,该用户就会有对应的约束了! 由 ...

  8. 使用lamdba函数对list排序

    lamdba好处:精简代码,省去了定义函数.

  9. centos7 下安装mysql教程

    最近要在centos服务器上配置环境,在部署mysql的时候,碰到各种各样的问题,网上博客文章也是有各种坑,目前发现一个比较好的博客: https://blog.csdn.net/xiaomojun/ ...

  10. ionic 实现仿苹果手机通讯录搜索功能

    前言 由于之前做的SRM移动应用采用的是ionic1.x框架进行开发的,由于性能方便的诟病,导致用户体验不是很友好,于是想着怎么样去提高应用的性能问题.此时刚好ionic3.x框架已发布,由于ioni ...