在C C++和C中的matlab在matlab中的C++

问题描述:

似乎有几种方法可以在C++中调用matlab并在matlab中调用C++。虽然我试图在这里列出他们,但请指出如果我错过了一些东西。在C C++和C中的matlab在matlab中的C++

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

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

除了matlab和C C++可以通过写入和从某个文件(例如mat文件,文本文件)读取数据进行通信。

有不止一种方法来实现这里的每个目标,你能告诉我哪些情况最适合使用它们中的哪一个?即在C共享库中调用函数VS将C C++代码编译为二进制MEX文件,Matlab引擎VS将Matlab代码编译为C C++共享库。

感谢和问候!

+0

没有语言叫做C/C++。 C和X之间的接口将比C++和X之间的接口容易得多。 – 2009-10-16 08:41:24

+11

你知道我的意思,“C和/或C++” – Tim 2009-10-16 08:43:43

+1

C答案比C++答案短得多(在某些情况下,C++的答案将是“在C中编写包装”)。你更关心哪一个? – 2009-10-16 08:47:36

我只有从MATLAB调用C或C++函数expraience。在我看来,共享库中的调用函数与MEX文件中的调用函数之间唯一的区别在于,对于共享库,您必须使用“calllib”调用该函数,该函数是命令行类型的函数,并且MEX函数允许你可以像调用内置函数一样调用函数,这样界面就更清洁了。

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

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

使用共享库,如果

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

真的,它归结到界面。我个人更喜欢MEX文件路由,因为它提供了从MATLAB到您的C或C++功能的最清洁的接口。你可以像使用标准MATLAB类型的另一个函数那样调用它。随着共享库,你可能有调用库函数

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

的MATLAB的C编译器是不是真的很特别;有可能使用不同的编译器。请参阅link支持的编译器列表。这不包括gcc,但包括MS Visual Studio。与提供的库链接时会遇到问题。基本上来说:从C调用matlab是你要做的事情,如果你需要一个紧密的接口;例如如果你想同步2个工具,或者你的S函数(simulink)需要额外的信息。但是,这样的文件首先被Matlab/simulink调用。

从matlab调用c是你想要做的,如果你写自己的S函数或扩展到matlab。

C和C++之间的选择是你的;如果你从一张空白纸开始,我建议你使用C++;你不需要使用完整的功能,但它允许更多的*。现在还有更多的库可用于C++。

如果您需要迁移到非常不同的环境,C语言是您的选择;即例如将C编译为DSP。或者如果你已经有C中的遗留代码来从头开始。混合C和C++是可能的,但是可能有点麻烦;我相信你会在这个主题上找到关于*的话题。

培训视频约用C在Matlab和Matlab使用C++ ++(波斯语)

内容之前,做一些数据格式:

1 - 简介

  • Introduction.wmv [02:00,1.2 MB,800×600]

2 - C++在Matlab

  • 基本concepts.wmv [09:04,5.9 MB,800×600]
  • 配置和一个简单的项目[8点25分,13 MB,800×600]
  • 样品[02:17,2.7 MB,800×600]
  • 调试[2点38,3.4 MB,800×600]

3 - Matlab的在C++

  • Matlab的C++共享DLL.wmv [5点42,6.8 MB,800×600]
  • 从VC用Matlab ++ [10时52分,14.2 MB,800×600]

Watch or Download from Google

Download from 4Shared