linux系统中的C++/MATLAB混合编程
来源:互联网 发布:中国邮政网络陪训学院 编辑:程序博客网 时间:2024/05/16 07:41
我研究的是图像盲去模糊算法,因为前期MSDecomp预处理是在Linux下用C++写成的,而后面的优化过程均是用MATLAB写成的,因此我需要将这两部分的代码融合在一起。
这里记录的是我在虚拟机中在linux系统下实现MATLAB调用C++函数的过程。
首先安装VMware,并选择系统文件为Ubuntu11.10操作系统,安装完后需要设置共享文件夹以便文件传输共享,具体操作是一方面设置VMware中Option的shared folder选择主机中的共享文件夹,然后在/etc/init.d/open-vm-tools末尾行增加一条语句:sudo mount -t vmhgfs .host:/ /mnt/hgfs, 即可实现在/mnt/hgfs中看到多出share文件夹用来共享了。 还要在linux系统中装上MATLAB,然后是对C++进行编译,用的是MEX命令。
由于MATLABlinux版本下MEX只支持GCC到4.3.4版本,而系统一般装的都是最新的GCC版本,因此需要装个低版本的GCC,然后需要对/usr/bin/下gcc和g++进行重链接,sudo rm /usr/bin/gcc(or g++); sudo ln -fs $PATH/gcc-4.3.4(or g++-4.3.4) /usr/bin/gcc(or g++),这样就可以在MATLAB中调用linux的GCC编译器了。
接下来是对MATLAB路径下的文件libstdc++.so.6进行重链接,使之链接到系统的libstdc,系统的libstdc应采用的在当前使用的GCC路径下,查找路径并链接即可。
然后是开始用MATLAB的MEX对C++函数的编译过程,注意C++的函数中的静态库如果是在之前的GCC版本中生成的,则需要重新进行编译。
要实现对C++函数的混编还需要在C++函数中编写void MexFunction()这个接口函数,接口函数中的可以用一套MEX的API函数实现自己的接口设置,并在头文件中加入mex.h,完成后便可用MEX命令了。
MEX的格式为:mex -I$INCLUDEPATH -L%LIBPATH FunctionName.cpp SubFunName.cpp
其中$INCLUDEPATH %LIBPATH 分别指的是C++工程的include路径以及lib路径,一般可直接引用MAKEFILE文件中的记录。
不过在
这样就可得到NAME.mexglx文件,在MATLAB中便可直接引用NAME()来实现对C++函数的调用。
- linux系统中的C++/MATLAB混合编程
- Linux下C++,matlab混合编程
- Matlab C混合编程
- matlab C混合编程
- Matlab C混合编程
- matlab/C 混合编程
- Matlab和C混合编程
- matlab与C混合编程
- c和matlab混合编程
- matlab与c混合编程
- matlab与C混合编程
- C和MATLAB混合编程
- MATLAB与C混合编程
- matlab与c混合编程
- Matlab C/C++ 混合编程
- Matlab、C++、OpenCV混合编程
- Matlab C混合编程配置
- Linux下C和matlab混合编程学习(1)
- tomcat中连接池配置问题
- jquery+css+jsp实现下拉导航菜单
- 设置session过滤器
- 冬日送大礼—Finereport爱好者论坛征文竞赛第一期!
- 多线程经验谈
- linux系统中的C++/MATLAB混合编程
- scp命令用法
- 有用的链接 与 说明
- 正则表达式系统教程
- 图像去模糊算法在CUDA上的实现,基于MATLAB平台
- 长连接与短连接
- GoldenGate配置实例:RHEL 4.7下的Oracle 10g RAC到单实例的单向同步(二)
- 【大气红歌】著名歌唱家拉齐个人介绍
- JAVA调用系统命令或可执行程序