创建c++墨西哥人函数矩阵与C API
请注意
MATLAB®提供了一个API,使用现代c++语义和设计模式MATLAB c++数据API。MathWorks建议您创建墨西哥人与这个API函数。有关更多信息,请参见从MATLAB编写c++函数调用(墨西哥人文件)。
如果你的墨西哥人功能必须运行在MATLAB R2017b或更早,那么你必须使用矩阵C API函数在c++应用程序中。墨西哥人与矩阵C API函数构建c++语言支持所有标准。金宝app这个话题讨论具体的c++语言创建和使用墨西哥人文件时需要考虑的问题。
您可以使用MATLAB C c++应用程序中的代码示例。例如,请参见mexcpp.cpp
在c++类的例子,其中包含两个C和c++语句。
创建你的c++源文件
MATLAB c++源代码示例使用. cpp
文件扩展名。扩展. cpp
是明确的和被c++编译器。其他可能的扩展包括。C
,.cc
,. cxx
。
编译和链接
建立一个c++墨西哥人文件,类型:
墨西哥人文件名. cpp
在哪里文件名
源代码文件的名称,在MATLAB的路径上。
您可以运行一个c++墨西哥人与MATLAB的相同版本文件只在系统文件被编译。
内存问题类的析构函数
不使用mxFree
或mxDestroyArray
函数在一个c++类的析构函数用于MEX-function。如果MEX-function抛出错误,MATLAB清理MEX-file变量,描述自动清理临时数组在墨西哥人文件。
如果出现错误,导致对象的范围,MATLAB调用c++析构函数。直接在析构函数中释放内存意味着MATLAB和析构函数释放相同的内存,它可以腐败的记忆。
使用mexPrintf打印MATLAB命令窗口
使用cout
或c语言printf
功能不正常工作在c++中墨西哥人文件。使用mexPrintf
函数来代替。
c++类的例子
墨西哥人文件mexcpp.cpp
展示了如何使用c++代码用C语言文件墨西哥人。的例子使用函数矩阵C API。它使用成员函数,构造函数、析构函数和iostream
包含文件。
该函数定义一个类myData
与成员函数显示
和set_data
和变量v1
和v2
。它构造一个对象d
类的myData
并显示的初始化值v1
和v2
。然后,它集v1
和v2
你的输入和显示新值。最后,删除
操作者清理对象。
建造这个示例中,将该文件复制到MATLAB路径和命令提示符类型:
墨西哥人mexcpp.cpp
调用语法mexcpp (num1, num2)
。
c++文件处理的例子
的mexatexit.cpp
示例显示了c++文件处理功能。比较它与C代码的例子mexatexit.c
,它使用mexAtExit
函数。
c++的例子
c++使用一个例子fileresource
类来处理文件打开和关闭功能。墨西哥人函数调用这个类的析构函数,关闭数据文件。这个示例还在屏幕上打印一条消息在执行数据文件的操作。然而,在这种情况下,唯一的C文件操作执行写操作,流
。
构建mexatexit.cpp
墨西哥人文件,将文件复制到MATLAB路径和类型:
墨西哥人mexatexit.cpp
类型:
z =“对于c++ MEX-file”;mexatexit (x) mexatexit (z)清晰mexatexit
写入数据文件。写入数据文件。
显示的内容matlab.data
。
类型matlab.data
我为c++ MEX-file输入字符串
C的例子
注册的C代码例子mexAtExit
函数执行清理任务(关闭数据文件)时,墨西哥人文件清除。这个例子在屏幕上打印一条消息使用mexPrintf
当执行文件操作打开外部文件
,流
,文件关闭
。
构建mexatexit.c
墨西哥人文件,将文件复制到MATLAB路径和类型:
墨西哥人mexatexit.c
运行示例。
x =“我的输入字符串”;mexatexit (x)
matlab.data打开文件。写入数据文件。
清晰的墨西哥人的文件。
清晰的mexatexit
matlab.data关闭文件。
显示的内容matlab.data
。
类型matlab.data
我的输入字符串