如题,真的是一个很艰辛的过程,在windows下的话,在VS下的话,一切问题都不是问题。
但是,现在需要在ubuntu下的ROS中实现c++和MATLAB混编,就很鸡肋。
------------------------------------------------------------------------------------------------------------------------------------------------------------
0.在终端进入matlab操作区域
matlab -nodesktop -nosplash
1.设置matlab的编译器
输入并执行如下命令:mex –setup
在出现的编译器中,选择mex -setup C++
再输入命令:mbuild –setup
再选择mex -setup C++ -client MBUILD
设置结束,出现 “MBUILD 配置为使用 'g++' 以进行 C++ 语言编译。”
2.编写.m文件
function result=lib_add(a,b)
%UNTITLED4 此处显示有关此函数的摘要
% 此处显示详细说明
result = a+b;
end
3.编译.m文件
在ubuntu下编译.m文件,后面在路径配置的时候很关键。
执行下面的代码时,要解决gcc和g++的版本问题,在前面的博客中已经提到在UBUNTU16.04中要如何解决这个问题。
此外还遇到了找不到libstdc++.so.6的问题,此时全盘搜索,再将该文件复制到对应的MATLAB文件夹中即可。
代码要在MATLAB中编!//其实在终端打开MATLAB,输入命令也是可以的。
mcc -W cpplib:libMypr -T link:lib FrequencyDomain.m
上述代码编译完成之后,生成libMypr.h、libMypr.cpp、 libMypr.so、 libMypr.exports这四个文件,也是我们在c++中调用所需要的
4.编写C++代码,并将.cpp文件和编译的.m文件放在统一文件夹下
#include "mclmcrrt.h"
#include "mclmcr.h"
#include "mclcppclass.h"
#include "matrix.h"
#include <iostream>
#include "libMypr.h"using namespace std;