matlab 与c/c++ 混合MEX的编程遇到的问题

matlab 与c/c++ 混合MEX的编程遇到的问题
问题1,首先是mex配置问题
Matlab中输入命令mex -setup
错误提示信息:Error using mex No supported compiler or SDK was found. For options, visit http://www.mathworks.com/support/compilers/R2015a/win64.html.

解决问题1:
第一步,点击此链接download下载SDK,选择自己的MATLAB版本后,点击Support Compilers选项,如图所示,本人版本是2015a。
在这里插入图片描述
点开后弹出pdf文档,如下所示
在这里插入图片描述
点击上述Installation Instructions会进入一个问答坛,选择SDK7.1
在这里插入图片描述
下载即可,在sdk安装过程中会出现.net**所以组件安装可能不成功(忘记那串长长的英文了),要想解决.net问题参看问题2。
问题2:
some windows sdk components require the RTM.NET Framework4.Setup detected a*******
解决问题2:

第一步,你需要卸载两个visual x86 x64文件,在控制面板—卸载即可找到(当然在你配置工作做完以后,你还要下载安装回来)。
在这里插入图片描述
第二步,更改注册表的将注册表中Client和Full中的version将原先4.7.03062改为4.0.30319,
输入命令regedit,进入注册表
注册表中找到
路径1:
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\NET Framework Setup\NDP\v4\Client
路径2:
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\NET Framework Setup\NDP\v4\Full

分别点击Client和Full在注册表右方模块会出现
在这里插入图片描述
将两个Version(Client和Full文件中各有Version)修改为4.0.30319,此处需要特别注意,一定要将之前的Version记下来,在mex –setup成功之后还需要重新修改回来!

即可成功。
问题3:
Function “mxGetIr” is obsolete. 64-bit mex files using sparse matrices must be rebuilt with the “-largeArrayDims” option. See the R2006b release notes for more details
解决问题3:
首先下载libsvm,安装解压到matlab的子目录toolbox文件夹下,使用Matlab打开Make.m文件,本人路径如下:在这里插入图片描述
在make.m文件需要将-largeArrayDims 添加到64位的机器上,改完之后的:
mex -O -largeArrayDims -c svm.cpp
mex -O -largeArrayDims -c svm_model_matlab.c
mex -O -largeArrayDims svmtrain.c svm.obj svm_model_matlab.obj
mex -O -largeArrayDims svmpredict.c svm.obj svm_model_matlab.obj
mex -O -largeArrayDims libsvmread.c
mex -O -largeArrayDims libsvmwrite.c

然后可能还会提示各种文件不存在,没有关系,按照提示信息找到相应的文件复制(剪切)粘贴到错误信息中提示的路径即可。

重新编译即可,如
mex -O -largeArrayDims file_name.cpp
在这里插入图片描述
可以run你的代码了。此处附上libsvm-3.23.zip,vcredist_x64.exe,vcredist_x86.exe下载链接download提取码:9inr第一次写博客,有什么问题还望大家多多指正!!

昨天在编译的时候遇见了上述几个问题,总算是解决了。感谢各位大神的分享!

参考文献:
[1]: https://blog.csdn.net/zhaomengszu/article/details/55505113
[2]: https://blog.csdn.net/sinat_25192207/article/details/53325823

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值