-->

matlab在C C ++和C C ++在MATLAB [关闭](matlab in C C++ a

2019-08-19 02:23发布

看来,通过多种方式调用Matlab用C C ++和调用C C ++在MATLAB。 当我尝试在这里一一列举,请指出来如果我错过了一些东西。

要调用C C ++在MATLAB中,也有两种方法。 第一个是调用用C共享库的功能。 第二个是建立C C ++代码为二进制MEX-文件,这将在MATLAB命令行调用。 对于第一种方法,是C共享库只是一般性的,即,没有变化,为MATLAB其C代码和从通用C编译器等编译的gcc?

调用Matlab代码用C C ++,有两种方法。 第一个是Matlab引擎。 第二个是使用MATLAB编译MCC从您的MATLAB代码创建C或C ++的共享库。

除了MATLAB和C C ++可通过写入和读取数据通信,并从一些文件(例如垫文件,文本文件)。

有一个以上的方式来完成这里的每一个目标,你能告诉我什么情况下最适合使用它们中的哪? 即主叫用C共享库中的函数VS大厦C C ++代码为二进制MEX-文件,Matlab引擎VS编译Matlab代码成C C ++共享库。

感谢致敬!

Answer 1:

我只有用调用C或从MATLAB C ++函数expreience。 这在我看来就像调用函数中的共享库,并从MEX文件调用函数之间的唯一区别是,共享库,你必须调用与“calllib”,这是一个命令行输入功能和MEX功能允许功能您调用函数,就好像它们是内置的功能,所以接口是干净了一点。

我的建议是使用MEX文件,如果

  • 您正在使用C ++(您可能需要编写一个包装共享库使用C ++)
  • 您使用MATLAB作为胶为大量优化的C或C ++例程。 你要能够干净利落给他们打电话。

使用共享库,如果

  • 你已经有一个可以不加修改地使用现有的C库。
  • 你只需要少量的调用C函数的。

真的,它归结到接口。 我个人比较喜欢MEX文件路径,因为它提供了从MATLAB最干净的界面,以C或C ++函数。 你可以把它像标准MATLAB类型只是一个功能。 随着共享库,你可能有调用库函数前做一些数据格式



Answer 2:

我想你已经命名的方法是正确的(它已经有一段时间,因为我已经使用过)

MATLAB的C编译器是不是真的很特别; 它可以使用不同的编译器。 见链接支持的编译器的列表。 这不包括海湾合作委员会,但包括MS Visual Studio中。 与所提供的库链接时,你会碰到的问题。

基本上是:从C调用Matlab是什么,如果你需要一个紧密的接口,你会怎么做; 例如,如果要同步的2个工具,或者你的S-功能(SIMULINK)需要额外的信息。 不过,这样的文件是由propably摆在首位MATLAB / Simulink的调用。

调用从MATLAB c是你想,如果你编写自己的S-功能或扩展matlab做什么。

C和C ++之间的选择是你; 如果你从一张白纸开始,我建议你用C ++; 你并不需要使用完整的功能,但它可以让更多的自由。 同时更多的图书馆往往是可用于C ++时下。

C是首选,如果你需要迁移到不同环境的语言; 即编译C到DSP进行实例。 或者,如果你有使用C遗留代码,从启动。 混合C和C ++是可能的,但可以是有点麻烦; 我敢肯定你会发现独自在计算器上的话题在这个问题上。



文章来源: matlab in C C++ and C C++ in matlab [closed]