VC调用matlab
Matlab是一个强大的数学计算/仿真工具,其内置了很多实用的现成的函数,而且我们经常也自己定义很多m函数。但在很多情况下,我们不得不使用VC编程。那么,如何在VC中利用matlab的资源呢?
环境:
Win8.1 64 bit
MATLAB R2010b 64bit
Visual Studio 2010 ultimate
混合编程环境配置:
要建立独立运行的C应用程序,系统中需要安装Matlab、Matlab编译器、C/C++编译器以及Matlab C/C++数学库函数和图形库函数。
Matlab编译器使用mbuild命令可以直接将C/C++源代码编译为独立运行程序,在这些源代码中可以使用Matlab提供的接口来调用Matlab数学库函数。
虽然生成的可执行程序可以脱离Matlab环境运行,但是它需要Matlab C/C++数学库文件或者图形库文件的支持才能运行。但如果C/C++源代码完全是按传统C/C++源代码语法规则编写,没有包含Matlab数学库和图形库的调用,则不仅可以独立与Matlab环境,也不需要那两个库函数的支持

  1. matlab 环境设置

打开matlab,在命令行状态下键入:mex -setup(x和-之间必须有空格,即setup变成紫色)
然后出现如下提示:

>> mex -setup
Please choose your compiler for building external interface (MEX) files: Would you like mex to locate installed compilers [y]/n? y(自己手动输入)默认装在C盘,其他盘可能需要选择nSelect a compiler:
[1] Microsoft Visual C++ 2010 in C:\Program Files (x86)\Microsoft Visual Studio 10.0 [0] None Compiler: 1Please verify your choices: Compiler: Microsoft Visual C++ 2010
Location: C:\Program Files (x86)\Microsoft Visual Studio 10.0 Are these correct [y]/n? y*************************************************************************** Warning: MEX-files generated using Microsoft Visual C++ 2010 require
           that Microsoft Visual Studio 2010 run-time libraries be
           available on the computer they are run on.
           If you plan to redistribute your MEX-files to other MATLAB
           users, be sure that they have the run-time libraries.
***************************************************************************
Trying to update options file: C:\Users\Administrator\AppData\Roaming\MathWorks\MATLAB\R2010b\mexopts.bat
From template:              C:\PROGRA~1\MATLAB\R2010b\bin\win64\mexopts\msvc100opts.bat Done . . . ************************************************************************** Warning: The MATLAB C and Fortran API has changed to support MATLAB
           variables with more than 2^32-1 elements.  In the near future
           you will be required to update your code to utilize the new
           API. You can find more information about this at:
           http://www.mathworks.com/support/solutions/en/data/1-5C27B9/?solution=1-5C27B9
           Building with the -largeArrayDims option enables the new API. 然后,继续在命令行状态下输入:
>> mbuild -setup
Please choose your compiler for building standalone MATLAB applications: Would you like mbuild to locate installed compilers [y]/n? ySelect a compiler:
[1] Microsoft Visual C++ 2010 in C:\Program Files (x86)\Microsoft Visual Studio 10.0 [0] None Compiler: 1Please verify your choices: Compiler: Microsoft Visual C++ 2010
Location: C:\Program Files (x86)\Microsoft Visual Studio 10.0 Are these correct [y]/n? y**************************************************************************** Warning: Applications/components generated using Microsoft Visual C++
           2010 require that the Microsoft Visual Studio 2010 run-time
           libraries be available on the computer used for deployment.
           To redistribute your applications/components, be sure that the
           deployment machine has these run-time libraries.
**************************************************************************** Trying to update options file: C:\Users\Administrator\AppData\Roaming\MathWorks\MATLAB\R2010b\compopts.bat
From template:              C:\PROGRA~1\MATLAB\R2010b\bin\win64\mbuildopts\msvc100compp.bat Done . . .

2.VS环境设置
(1)设置Include 和Library 目录
项目右键->属性->VC++目录->包含目录:添加
\R2010b\extern\include\win64
\R2010b\extern\include\
项目右键->属性->VC++目录->库目录:添加
\R2010b\extern\lib\win32\microsoft
\R2010b\extern\lib\win64\microsoft
截图(部分):
(2)设置工程目录
项目右键->属性->C/C++->常规->附件包含目录:添加
\R2010b\extern\include\win64
\R2010b\extern\include\
项目右键->属性->链接器->常规:添加
\R2010b\extern\lib\win32\microsoft
\R2010b\extern\lib\win64\microsoft
项目右键->属性->链接器->输入->附件依赖性:添加
libeng.lib
libmat.lib
libmex.lib
libmx.lib  
注:1.lib文件包含在\R2010b\extern\lib\win64\microsoft,可根据需要增减
2.附件依赖性在VS2010前以空格隔开,在VS2010后使用;隔开。
截图:
注:附加依赖项的设置方式亦可以选择代码包含方式:

// link matlab sys lib
#pragma comment(lib, "mclmcrrt.lib")
#pragma comment(lib, "libmx.lib")
#pragma comment(lib, "libmat.lib")
#pragma comment(lib, "mclmcr.lib")

特别注意在64bit 系统下,目前我的实验结果是只能进行X64编译,即必须更改VS编译方式为x64,否则会出现错3,个人猜测在32bit系统下应该可以进行win32编译(当然matlab也是32bit)
设置方式:
项目右键->属性->链接器->高级->目标计算机:更改(只针对64位WINDOWS)
MachineX86 -> MachineX64
注:分析原因为MATLAB根据计算机平台选择了X64编译环境,如此处不修改会出现 错误3
(3)配置管理器设置(只针对64位WINDOWS)
生成->配置管理器->平台:更改
Win32->X64
注:分析原因为配合链接器中目标计算机的修改,如此处不修改会出现 错误4
截图:

3.系统(Windows)环境设置
我的电脑->属性->高级系统设置->高级->环境变量->Path,添加:
\R2010b\bin;\R2010b\extern\lib\win64\microsoft;\bin\win64
注:1.Windows7的情况下,“用户变量”和“系统
2.重启后生效
变量”都需 添加,如不添加,运行时会出现 错误5
(必须设置环境变量)
附录:错误情况及解决
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.系统环境设置

参考:
http://blog.sina.com.cn/s/blog_7e2e98ad0101hd3c.html(main)
http://blog.csdn.net/u010177286/article/details/45173311
http://blog.csdn.net/zclzcl501/article/details/31792531
http://www.cnblogs.com/xpvincent/archive/2013/02/05/2893046.html
http://www.cnblogs.com/uniquews/archive/2012/12/27/2835923.html

VS2012和matlab 2010b混合编程之环境配相关推荐

  1. qt web混合编程_基于Qt与MATLAB的混合编程技术

    摘要:在Qt雷达仿真系统中,数据处理及图形显示尤为重要.本文为此提出了一种Qt与MATLAB混合编程的方法.通过VC++和MATLAB混合编程技术,将MATLAB函数封装成动态链接库,Qt调用这个动态 ...

  2. 利用Matcom实现基于MATLAB的混合编程

    利用Matcom实现基于MATLAB的混合编程 来源: 神经网络 作者:AI俱乐部 网友评论 0 条 浏览次数 42 <script> remark_look('re_look.php?c ...

  3. Matlab.NET混合编程调用Figure窗体

    原文:[原创]Matlab.NET混合编程调用Figure窗体 1.前言 做Matlab.NET混合编程好几年了,虽然Matlab很多函数忘记得差不多了,但基本的东西还是能熟练使用.特别是在C#调用M ...

  4. 基础知识(一)matlab与c++混合编程之环境搭建

    Matlab 与c++混合编程方法 开发环境:win7 64位+vs2010+matlab 如果想要让matlab调用c++的函数类,则需要把c++编译成

  5. 基于引擎的matlab+vc混合编程的配置

    前段时间在项目中做了一些关于基于引擎的vc+matlab混合编程的工作. 如果你是混合编程新手,我相信使用引擎的方式编程是比较简单快捷的一种方式. 当然这种方法也有其缺点,就是不能脱离matlab运行 ...

  6. matlab混合编程设置,matlab c++ 混合编程初始设置

    以前做过matlab7与c++的混合编程:将m函数编译成dll给C++调用,从而加快开发的进度.但是今天在matlab2008b 下面又做了一遍,发现matlab又改了很多东西,诸如增加了面向对象的的 ...

  7. matlab r2012a win10,vs2010和Matlab R2012a 混合编程

    注:Matlab r2010b及以后版本才支持vs2010, 之前版本中mbuild命令输入后可能会找不到vs2010编译器. 2.书写m文件 示例如下: function [ c ] = MyAdd ...

  8. Matlab C++混合编程 在VisualStudio下的编程 使用了Opencv库

    某工程上需要在matlab上使用c++版本的opencv,之前使用的是版本配置是matlab2018和vs2018,而现在使用的是matlab2016和vs2015,不同matlab版本的调用c++代 ...

  9. Matlab C混合编程

    设置编译器路径 在Matlab 命令窗口键入    mex -setup,下面只要根据提示一步步设置就可以了. 为了测试你的路径设置正确与否,把下面的程序存为hello.c. [cpp] view p ...

最新文章

  1. Kafka如何对Topic元数据进行细粒度的懒加载、同步等待?
  2. 服务器预装操作系统,服务器预装操作系统吗
  3. Linux——进程信号(总结)
  4. [一天一个小知识]instanceof
  5. 正则表达式格式化字符串
  6. c盘清理代码_IntelliJ IDEA 缓存和索引介绍和清理方法(一)
  7. leetcode —— 面试题36. 二叉搜索树与双向链表
  8. Docker学习总结(27)——Dockerfile详解
  9. Mysql大量插入随机数据方法--存储过程
  10. Image File Format Specifications {转载}
  11. mysql 里的1对n虚线_mysql workbench EER图,里面的实线以及虚线的关系
  12. mysql 跳过授权表_跳过授权表登录后使用replace into创建root权限用户
  13. java运行无法加载主类_java运行显示“找不到或无法加载主类”的解决办法(linux)...
  14. day 05 random time sys os pickle json re模块 爬取dytt
  15. 联想p720装系统_联想发布ThinkStation P920和P720至强处理器推荐
  16. Arcpy处理月NDVI,最大合成法合成年NDVI
  17. 首批!智领云CTO宋文欣入选“开源GitOps产业联盟技术委员会”成员名单
  18. ZBrush中的笔触
  19. 交换机路由器的基本配置
  20. 基于MQ对登录系统核心流程进行异步化改造,提升系统性能-11

热门文章

  1. 迅雷 5.9.14.1246 去广告版补丁
  2. sql server数据库添加 mdf数据库文件,遇到的报错
  3. Github Star 7.2K,超级好用的OCR数据合成与半自动标注工具,强烈推荐!
  4. 利用LSTM+CNN+glove词向量预训练模型进行微博评论情感分析(二分类)
  5. Ubuntu12.04如何修改窗口背景色为眼睛保护色来保护眼睛,强力推荐!!
  6. C专家编程(Expert C Programming)(二)
  7. Matlab imagesc函数保存图像去除图像白边(文末附上参考代码)
  8. 自定义UI 自制表盘
  9. IDEA 关联本地SVN项目
  10. 日历 android 周历,Android Studio 基础 之 获取系统Calendar 日历日程 (涉及指定日期时间判断是星期几的方法使用)的方法整理...