在64位机器上VS2010调用matlab2011a

本人在做微博缩略图的分类,分成有文字的和没有文字的。。自己在matlab里面写了.m的判断函数,想要从VS2010调用。。下面是实现过程:
环境:
64位机器 ,系统是08R2的。
matlab2011a:
vs2010:

1,MATLAB设置:

1.1安装编译器(红色为输入的命令)

>> mbuild -setup
 
Welcome to mbuild -setup.  This utility will help you set up  
a default compiler.  For a list of supported compilers, see  
http://www.mathworks.com/support/compilers/R2011b/win64.html
 
Please choose your compiler for building standalone MATLAB applications:
 
Would you like mbuild to locate installed compilers [y]/n? y
 
Select a compiler:
[1] Microsoft Visual C++ 2010 in C:\Program Files (x86)\Microsoft Visual Studio 10.0
 
[0] None
 
Compiler: 1
 
Please 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\liang.guo\AppData\Roaming\MathWorks\MATLAB\R2011b\compopts.bat
From template:              C:\PROGRA~1\MATLAB\R2011b\bin\win64\mbuildopts\msvc100compp.bat
 
Done . . .
 
>>

1.2生成dll文件

编辑m文件,这里是我自己写的检测图片中是否有文字的M文件:

//根据K的值判断图片中是否有文字,这里就不全写了。。

function k=YesorNo(name)

        imgtemp=imread(name);%
       .......

       ...有点长就不写了......

        k = value;
///


在MATLAB命令框中输入以下命令:

>> mcc -W cpplib:ppp -T link:lib YesorNo.m  %%    ppp是想要生成的dll等文件的名字。。。

生成ppp.lib, ppp.h, ppp.dll 等文件


2 VS设置

新建一个win32 控制台应用程序,添加上面的三个文件到所建的工程

2.1,首先配置项目属性页/配置属性/C-C++/常规/附加包含目录:

D:\Program Files\MATLAB\R2011a\extern\include

D:\Program Files\MATLAB\R2011a\extern\include\win64


2.2,配置项目属性页/配置属性/链接器/常规/附加库目录:

D:\Program Files\MATLAB\R2012b\extern\lib\win64\microsoft


2.3,配置项目属性页/配置属性/链接器/输入/附加依赖性:

填入ppp.lib mclmcrrt.lib mclmcr.lib


上面几步都是按照网上找的一步步来的,但是会有问题:无法识别的外部符号错误或者编译通过但是执行的时候找不到动态链接库。

2.4把 solution platform 调成x64的 ,如图下。否侧会有无法识别的外部符号错误。

2.5,把matlab的动态链接库添加到环境变量。如下图:


配置到此结束

3 测试是否成功

#include "stdafx.h"
#include <iostream>
#include "mclmcr.h"
#include "mclcppclass.h"
#include "ppp.h"
int _tmain(int argc, _TCHAR* argv[])
{  
        if( !pppInitialize())
        {
                std::cout << "Could not initialize ppp!" << std::endl;
                return -1;
        }

        try
        {
      
        mwArray k(1, 1, mxDOUBLE_CLASS);
    
        char str[]="C:\\下载缩略图中的人工\\29.jpg";
        
        mwArray name(str);

                YesorNo(1, k,name);//matlab中的m文件
       
        double y=k.Get(1,1);
      std::cout<<y<<"   "<<std::endl;

        }
        catch( const mwException& e)
        {
          std::cerr << e.what() << std::endl;
                  
        }
        // terminate the lib
        pppTerminate();
        return 0;
}

都是从网上找的很多牛人写的资源,再加上自己的 测试。。。。

欢迎大家交流。。。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值