MxArray.obj文件的生成

本文介绍如何在Matlab中使用mex指令与Visual Studio配合进行OpenCV库的混合编程,包括配置编译环境、生成Debug与Release版本的对象文件,并解决不同版本间可能存在的不匹配问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.
在Matlab中,使用mex指令:

mex -largeArrayDims   -g  -I'E:\matlabworkplace\headpose_with_block\third_part\mexopencv-2.4\include' -I'C:\OpenCV2.4\build\include' -L'C:\OpenCV2.4\build\x64\vc10\lib'  -lopencv_calib3d249 -lopencv_contrib249 -lopencv_core249 -lopencv_features2d249 -lopencv_flann249 -lopencv_gpu249 -lopencv_highgui249 -lopencv_imgproc249 -lopencv_legacy249 -lopencv_ml249 -lopencv_nonfree249 -lopencv_objdetect249 -lopencv_ocl249 -lopencv_photo249 -lopencv_stitching249 -lopencv_superres249 -lopencv_ts249 -lopencv_video249 -lopencv_videostab249 -c 'E:\matlabworkplace\headpose_with_block\third_part\mexopencv-2.4\src\MxArray.cpp' -outdir 'E:\matlabworkplace\headpose_with_block\third_part\mexopencv-2.4\lib'

虽然上面加入了-g,但是生成的obj还是release版本的,不能进行调试,(加-g和不加好像没有作用,都是release版本的)因此,我们在VS中进行编译。

2.
(1)在VS2010中,新建控制台应用程序–在向导中选择“静态库”。在项目的属性–VC++目录中配置如下(或者在属性管理器中,Debug|x64,属性进行配置):
包含目录:

C:\OpenCV2.4\build\include
C:\OpenCV2.4\build\include\opencv
C:\OpenCV2.4\build\include\opencv2
D:\Program Files\MATLAB\R2014b\extern\include

库目录:

C:\OpenCV2.4\build\x64\vc10\lib
D:\Program Files\MATLAB\R2014b\extern\lib\win64\microsoft

(2)在属性页,常规,修改目标文件名为:MxArray和目标文件扩展名.obj。
(3)选中项目,然后右键,编译或者重新编译。即可,在项目的同等目录下,有个x64文件夹,里面就有Debug和Release生成的目标文件。同样可以生成库文件(.lib)
对于Release采用同样的方法。

3.
Debug版本的MxArray.obj用于对MxArray.cpp的调试。
Release版本的MxArray.obj用于mex对其他mex.cpp进行编译时使用。
如:

cmd=['mex ' file ' -g -largeArrayDims ' obj   ' -I' toolboxDir ' -I'  vlInlucdDir ' -I' mexopencvIncludeDir ' -I' opencvIncludeDir  ' -outdir ' mexwDir  ' -L' vllibDir vlLibs ' -L' opencvlibDir opencvLibs];
eval(cmd);

如果不统一的化,会提示:

检测到“_ITERATOR_DEBUG_LEVEL”的不匹配项: 值“2”不匹配值“0”

4.
(1)我们在VS下编写代码(供混合编程调用)进行调试时,引用到MxArray.obj必须是Debug版本的。
(2)而当我们利用mex编译文件时,用到的MxArray.obj必须是Release版本的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值