问题:想将.m文件打包成com组件供vb.net调用,但却遇到“找不到C++编译器”的问题

我尝试了网上能找到的各种方法均不成功!最后我总结出以下方法:

首先确保你的matlab和vs都是正确安装的,并且matlab的版本与vs互相兼容(不兼容的情况是自己下载matlab安装目录下mexopts文件夹内容,这种情况其他博主已有文章详解,这里不再赘述)。然后可以用以下两种方法“看到”matlab搜索C++编译器的过程:

一、在matlab 命令窗口输入deploytool

出现compiler对话框,选择第三个进入“MATLAB Compiler”对话框

选择“Generic COM Component”方式,添加类和.m文件后,选择右上角Package打包

这时会出现打包失败(由于我已经解决问题所以就不放图了)的对话框,点击红字显示的

“打包失败,打开日志文件”,里面逐条显示搜索过程和路径。

二、在matlab 命令窗口输入mcc -v -W ‘com:my_add,myclass,1.0’ -T link:lib myadd.m

其中my_add是要生成的COM组件名,myclass是其类名,版本为1.0,myadd是其方法(也就是添加的.m文件)

然后运行,会在命令窗口显示搜索过程并最终结果是未找到任何已安装的C++编译器。

可以看到matlab自动开始搜索计算机上已安装或者曾经安装没卸载干净的C++编译器,

从环境变量——注册表——文件夹——文件依次进行,我们可以逐个过程地检查自己的电脑设置和命令窗口显示的是否一致,如果不一致再做修改使得和命令窗口显示的一致。比如我的显示:

正在查找文件’C:Program FilesMicrosoft Visual Studio 12.0VCbinamd64cl.exe’,否

原因是我的这个文件在’C:Program Files(x86)’文件夹下,于是我把VC文件夹拷贝到Program Files(x86)文件夹下果然就成功了。

后面会分享更多devops和运维方面的内容,感兴趣的朋友可以关注一下