ubuntu16.04下MATLAB和C++混编(基于ROS,不含VS类别的编译器)

本文详细介绍了在Ubuntu 16.04和ROS环境下,如何解决MATLAB与C++混合编程遇到的挑战,包括MATLAB编译器设置、.m文件编译、C++代码编写、编译过程中的依赖问题和解决方法。过程中涉及gcc/g++版本匹配、libstdc++.so.6缺失问题及动态链接库的处理。
摘要由CSDN通过智能技术生成

如题,真的是一个很艰辛的过程,在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;

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值