Hie*_*end 4 c c++ sockets matlab mex
我用C++编写了一个带有服务器和客户端的TCPIP-Socket-Connection,它在VisualStudio中运行得非常好.现在我想通过MEX-Files在MATLAB/Simulink中使用C++ - Client,稍后在S-Function中使用.我找到了两个关于MEX-Files的描述.
现在我感到很困惑,哪一个会被采取.我用第二个编写了一些简单的程序,但总是遇到数据类型的问题.我认为,这是因为给定的示例和函数仅适用于C而不适用于C++.
我感谢任何帮助!非常感谢你!
差异:
第二个链接中描述的C接口更加古老(我在1998年使用过这种接口).您可以使用此接口创建MEX文件,并使其在大量不同版本的MATLAB上运行.您可以使用C语言和C++代码.
第一个链接中描述的仅C++接口是MATLAB R2018a中的新接口(操作MATLAB数组的C++类在R2017b中引入,但编写MEX文件的能力是R2018a中的新功能).使用此接口编写的MEX文件将无法在以前版本的MATLAB上运行.
此外,这个界面(最终!)允许创建共享数据副本,就地操作等(我们多年来一直要求的东西,但他们不想放入旧的C接口,因为他们担心这对于普通的MEX文件编写者来说太复杂了.
需要注意的另一个变化是:
在R2018a中,MATLAB还改变了复杂数组存储在内存中的方式.在旧版本的MATLAB中,实部和虚部存储在单独的存储块中.在R2018a及以上版本中,它们存储在相同的内存块中,与您在自己的代码中使用的方式相同.
这会影响MEX文件!如果MEX文件使用复杂数据,则需要以MATLAB存储它们的方式读取和写入它们.如果运行为旧版MATLAB编译的MEX文件,或使用R2018a中的当前默认构建选项编译MEX文件,则复杂数组将在传递到MEX文件之前复制到旧存储模型.该mex命令的新编译选项-R2018a创建MEX文件,该文件不变地传递新存储模型中的数据.但是那些MEX文件与以前版本的MATLAB不兼容.
怎么选择?
如果您需要在最新的R2018a之前在MATLAB版本上运行MEX文件,请使用旧的C接口,您无法选择.
如果要使用C编程,请使用旧的C接口.
如果您需要使用复杂的数据,并且不希望产生副本的成本,则需要分别针对R2018a和更新版本以及R2017b及更早版本.您需要为这两个"平台"编写单独的代码.旧版本只能使用C接口进行定位.对于较新的版本,您可以使用任一界面.
如果您欣赏现代C++的优势并希望利用它们,并且只针对最新和最好的MATLAB版本,那么请使用新的C++接口.我还没有尝试过,但从文档中看起来设计得非常好.
| 归档时间: | 
 | 
| 查看次数: | 590 次 | 
| 最近记录: |