Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 其它 > 资料存档
资料存档 资料存档
回复
 
主题工具 显示模式
旧 2019-12-10, 16:49   #1
poster
高级会员
 
注册日期: 2019-11-21
帖子: 3,006
声望力: 66
poster 正向着好的方向发展
帖子 C C ++中的matlab和matlab中的C C ++

似乎有几种方法可以在C C ++中调用matlab和在matlab中调用C C ++。当我尝试在此处列出它们时,请指出如果我错过了一些东西。

要在matlab中调用C ++,也有两种方法。第一个是在C共享库中调用函数。第二个是将C C ++代码构建到二进制MEX文件中,这将从MATLAB命令行调用。对于第一种方法,C共享库是否只是通用库,即不更改其用于Matlab的C代码,并从通用C编译器(如gcc)进行编译?

要在C C ++中调用matlab代码,有两种方法可用。第一个是Matlab引擎。第二个方法是使用MATLAB Compiler mcc从您的MATLAB代码创建C或C ++共享库。

除了matlab和C,C ++还可以通过在某些文件(例如mat文件,文本文件)中读写数据来进行通信。

这里有多种方法可以实现每个目标,您能告诉我哪种情况最适合使用其中的哪种情况?例如,调用C共享库中的函数VS将C C ++代码构建为二进制MEX文件,Matlab引擎VS将Matlab代码编译为C C ++共享库。

谢谢并恭祝安康!


回答:
我只有从MATLAB调用C或C ++函数的经验。在我看来,在共享库中调用函数和从MEX文件中调用函数之间的唯一区别是,对于共享库,您必须使用“ calllib”来调用函数,后者是命令行类型的函数,而MEX函数允许您可以像调用函数一样调用它们,因为它们是内置函数,因此界面更加简洁。

我的建议是使用MEX文件,如果
  • 您正在使用C ++(可能必须编写包装器才能在共享库中使用C ++)
  • 您正在使用MATLAB作为大量优化的C或C ++例程的粘合剂。您将希望能够干净地调用它们。
如果使用共享库
  • 您已经有一个现有的C库,无需修改即可使用。
  • 您只需要少量调用C函数即可。
确实,它取决于接口。我个人更喜欢MEX文件路由,因为它提供了从MATLAB到C或C ++函数的最干净的接口。您可以像使用标准MATLAB类型的另一个函数一样调用它。对于共享库,可能需要在调用库函数之前进行一些数据格式化



更多&回答...
poster 当前离线   回复时引用此帖
回复


发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛禁用 表情符号
论坛启用 [IMG] 代码
论坛启用 HTML 代码



所有时间均为北京时间。现在的时间是 23:31


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.