zoukankan      html  css  js  c++  java
  • c++与matlab联合编程,调用Deploytool 生成exe文件和dll文件

    首先必须知道联合编程需要知道的一些命令解释:

    mcc 的作用是将 .m文件编译为 c/c++动态链接库文件,使你可以在 c/c++程序中使用 matlab的一些函数功能。mcc 也可以将.m文件编译为exe可执行文件。

    mex 的作用是将 c/cpp文件编译为 .m  文件可以调用的库文件,在Windows操作系统里通常是以mexw32mexw64为扩展名,让你可以使用 c/c++来扩展 matlab,即在matlab中调用C/C++编写函数的功能,达到增加新的功能或者加速原有程序的功能。

    mbuild 的作用是将 matlab视为一个 c/c++编译器,使用mbuild可以将 c/c++编译为 exe可执行文件,特色在于可以调用 matlab的数学库和图形库,但这样需要使用 matlab提供的动态连接库才能运行。

     --------------------------------------分割线-----------------------华丽转身-------------------------------

     在做matlab和C#混合编程时要对系统进行设置。比如我要用deploytool生成c++的动态链接库(下面有图),必须先要运行mbuild -setup命令。

    但是有时会出现找不到vs的情形。例如:

    >>mbuild -setup
    Please choose your compiler for building standalone MATLAB applications: 

    Would you like mbuild to locate installed compilers [y]/n? y

    Select a compiler: 
    [1] Lcc-win32 C 2.4.1 in E:\PROGRA~1\MATLAB\R2008a\sys\lcc 

    [0] None 

    Compiler: 

    同样的事情也可能出现在mex -setup命令上。
    >>mex -setup
    Please choose your compiler for building external interface (MEX) files: 

    Would you like mex to locate installed compilers [y]/n? y

    Select a compiler: 
    [1] Lcc-win32 C 2.4.1 in E:\PROGRA~1\MATLAB\R2008a\sys\lcc\bin 

    [0] None 

    Compiler: 

    如上,可能我们即使在机子上安装了vs,将仍然找不到它。


    原因在于,在用mex配置c++编译器时,mex首先检查系统是否安装了vs ,然后再检查版本是否正确。具体方法是:调用vs安装目录下的/VC/bin/c1.exe.它会输出一堆字符,然后在其中查看是否有“Version 版本号”,如果有就判断版本正确,否则就会出现上面的情形。而我们大部分都是安装的中文版,在中文版中,调用c1.exe后输出的相应字符是“版本号+版 ”,例如:“用于 80x86 的 Microsoft (R) 32 位 C/C++ 优化编译器 14.00.50727.762 版”
    显然没有“Version 版本号”出现。

    解决方法是:(1)安装vs2008英文版,使用此方法即可以解决问题;
                     (2)下载附件mexsetup,解压到matlab安装目录下的bin文件夹中;

    附件请移步到我的微盘:http://vdisk.weibo.com/s/lF3Og

    这种方法我试过,确实,使用mex -setup命令的时候它起作用了,但是mbuild -setup依旧有问题。

    后来试了下同事的电脑,发现不用做任何配置,以上命令都没有任何问题。他的电脑是vs2010+matlab2009b,我的是vs2008+vs2010+matlab2012a,都是xp系统。

    所以还是建议重装软件比较实在。

    ---------------------------------我又来了-----------------------------------------------------------------------

    但是我其实是很不愿意重装系统的,看到deploytool里面有直接生成exe文件,决定试下。如上图第一个选项。

    竟然什么都不用配置,生成工程后直接编译通过(可参考我之前的文章)。生成的distrib文件夹里面只有两个文件,但是如果不是在本机上运行,额外加装matlabmcr是必须的。

    后面的工作就很简单了,新建个c++工程,把生成的fall.exe加到工程里,写上:

    #include <windows.h>

    int main()

    {

    system("fall.exe");

    }

    一次性运行通过。

  • 相关阅读:
    HTML 布局
    HTML <div> 和<span>
    HTML 列表
    HTML 表格
    可视化反投射:坍塌尺寸的概率恢复:ICCV9论文解读
    智能座舱虚拟机系统
    深度学习白平衡(Color Constancy,AWB):ICCV2019论文解析
    面部表情视频中进行远程心率测量:ICCV2019论文解析
    高精地图中导航标识识别
    人脸标记检测:ICCV2019论文解析
  • 原文地址:https://www.cnblogs.com/xlw1219/p/2832222.html
Copyright © 2011-2022 走看看