【VS+opencv】使用VS将cpp文件编译为mexw64/32文件


话说Matlab和VS的联合编译真的让人头大…
顺带提一句,此方法VS任何版本都适用,或者说是:cpp文件编译为mexw64文件是不用关心VS和Matlab版本号的,毕竟cpp可以理解为只是一个文本文件···



1.简介

主要是别人提供的是一个cpp文件,然后最后要用Matlab编译,其中cpp文件使用到了opencv版本是2.4.9,我这里找到的2.4.9的最高只支持到VS2013,所以这次就是用的VS2013来配的。其他版本操作和本例是一样的。
博主本文的编译环境:VS2013、Matlab R2015b、Opencv2.4.9


2.配置VS属性表

是的…第一步还是配置属性表…(我这里就默认你们已经有要编译的cpp文件了)

2.1 新建工程

新建一个空项目
在这里插入图片描述
这里应用程序类型选择DLL,忘了选的话后面也可以选。
在这里插入图片描述

2.2 添加相关文件

添加头文件test.h和源文件test.cpp,建议就用这两个名字,因为后面要用。
在这里插入图片描述
然后在新建一个test.def文件,在这里:
在这里插入图片描述
在这里插入图片描述
重申:建议名字不要改

2.3 写入代码

2.3.1 test.h

test.h文件中写入:

#pragma once
#include "matrix.h"
#include "mex.h"
#define TESTMATLAB_EXPORTS
#ifdef TESTMATLAB_EXPORTS
#define MEX_FUNCTION_API __declspec(dllexport)
#else
#define MEX_FUNCTION_API __declspec(dllimport)
#endif
MEX_FUNCTION_API void mexFunction(int nlhs, mxArray* plhs[], int nrhs, mxArray* prhs[]);

2.3.2 test.cpp

test.cpp粘贴进你自己的cpp的代码
//
假装有图
//

2.3.3 test.def

test.def中写入:

LIBRARY    "testp"  
EXPORTS  
        mexFunction  

这个时候报错是正常,毕竟还没添加属性表…

2.4 配置属性表

2.4.1 选择编译平台

首先,将工程选择到X64(毕竟是生成mexw64文件,生成mexw32文件选择X86)
在这里插入图片描述

2.4.1 配置Matlab

老规矩,创建新的属性表:
在这里插入图片描述
在这里插入图片描述
然后双击打开。
添加包含目录:(注意自己的路径)

D:\P_Matlab\extern\include

在这里插入图片描述
添加库目录:(注意选择win64,X86的选择win32)

D:\P_Matlab\extern\lib\win64\microsoft

在这里插入图片描述
添加附加依耐项:注意看一下你的lib文件夹里面是否和我给的一样有的说只用加一两个就可以了,但是我之前报错了,所以索性就都加上,如果和我这个不一样的,参见我之前博客里面的附录2—获取自己的链接库列表传送门在此:链接: https://blog.csdn.net/weixin_41991128/article/details/83864713.

gpu.lib
libcovrt.lib
libemlrt.lib
libeng.lib
libfixedpoint.lib
libmat.lib
libmex.lib
libmwblas.lib
libmwblascompat32.lib
libmwboxfilter.lib
libmwboxfilter3.lib
libmwbwdistEDT.lib
libmwbwdistEDTFT.lib
libmwbwdistEDTFT_tbb.lib
libmwbwdistEDT_tbb.lib
libmwbwlookup.lib
libmwbwlookup_tbb.lib
libmwbwpackc.lib
libmwbwpackctbb.lib
libmwbwunpackc.lib
libmwbwunpackctbb.lib
libmwcannythresholding_tbb.lib
libmwcascadeClassifier.lib
libmwcgir_construct.lib
libmwcgxert.lib
libmwcoderassumptionsapp.lib
libmwcoderprofile.lib
libmwcoder_connectivity_comm.lib
libmwcoder_connectivity_memunit.lib
libmwcoder_ParamTuningTgtAppSvc.lib
libmwcoder_target_services.lib
libmwcoder_ToAsyncQueueTgtAppSvc.lib
libmwComputeMetric.lib
libmwddist.lib
libmwdetectBRISK.lib
libmwdetectFAST.lib
libmwdetectMser.lib
libmwdisparityBM.lib
libmwdisparitySGBM.lib
libmwedgethinning_tbb.lib
libmwextractBRISK.lib
libmwextractFreak.lib
libmwextractSurf.lib
libmwfastHessianDetector.lib
libmwfilcommon.lib
libmwforegroundDetector.lib
libmwgetnumcores.lib
libmwgrayto16.lib
libmwgrayto8.lib
libmwgrayxform.lib
libmwgrayxform_tbb.lib
libmwHOGDescriptor.lib
libmwimfilter.lib
libmwimlincomb.lib
libmwimlincomb_tbb.lib
libmwimreconstruct.lib
libmwimregionalmax.lib
libmwint16touint16.lib
libmwint32touint32.lib
libmwint8touint8.lib
libmwintlut.lib
libmwintluttbb.lib
libmwippfilter.lib
libmwippgeotrans.lib
libmwippmedianfilter.lib
libmwippreconstruct.lib
libmwlapack.lib
libmwmatchFeatures.lib
libmwmathutil.lib
libmwmorphop_binary.lib
libmwmorphop_binary_tbb.lib
libmwmorphop_flat.lib
libmwmorphop_flat_tbb.lib
libmwmorphop_ipp.lib
libmwmorphop_nonflat.lib
libmwmorphop_nonflat_tbb.lib
libmwmorphop_packed.lib
libmwocvgpumex.lib
libmwocvmex.lib
libmwopticalFlowFarneback.lib
libmwopticalFlowHSCore.lib
libmwopticalFlowLKCore.lib
libmwopticalFlowLKDoGCore.lib
libmwordfilt2.lib
libmwpointTracker.lib
libmwremap.lib
libmwremaptbb.lib
libmwrtiostreamutils.lib
libmwservices.lib
libmwsigstream.lib
libmwsimulink.lib
libmwslexec_parallel.lib
libmwslexec_simbridge.lib
libmwsl_AsyncioQueue.lib
libmwsl_fileio.lib
libmwsl_iofile.lib
libmwsl_log_load_blocks.lib
libmwsl_sfcn_cov_bridge.lib
libmwsl_solver_rtw.lib
libmwtbbhist.lib
libmwuint16toint16.lib
libmwxilcomms.lib
libmwxilcomms_rtiostream.lib
libmwxilservice.lib
libmwxilutils.lib
libmwxilutils_sl.lib
libmx.lib
libut.lib
mclbase.lib
mclcommain.lib
mclmcr.lib
mclmcrrt.lib
mclxlmain.lib
ne_mli.lib
ne_rtl.lib
ocrutils.lib
physmod_common_external_library_kernel.lib
physmod_common_foundation_core_util.lib
rtwcg.lib
sf_runtime.lib
SimulinkBlock.lib
sl_services.lib

在这里插入图片描述

2.5 *配置Opencv

注意:这里是我此次工程需要用到这个Opencv2.4.9,读者根据自己的需求配置自己.cpp中涉及使用到的包含项、库等即可,Opencv的配置详见:
链接:https://blog.csdn.net/weixin_41991128/article/details/83656543

2.6 确认相关设置

属性表配好之后还需要确定一下:
双击下图标注打开工程的属性表,检查配置类型是否为动态库
在这里插入图片描述


3.编译

点击生成解决方案
在这里插入图片描述
提示成功,然后到输出里给的路径找到刚刚生成的dll文件
在这里插入图片描述
然后直接重命名为你想要的名字,和mexw64后缀即为生成的mexw64文件了。

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值