头文件和c++编译的库文件Linux
这个例子展示了如何创建一个MATLAB®接口到c++库matrixOperations
Linux®通过调用clibPublishInterfaceWorkflow
.对于本例,库是由头文件定义的matrixOperations.hpp
共享对象文件libmwmatrixOperations.so
.
MATLAB在这个文件夹中提供了这些文件:
fullfile (matlabroot“外来的”,“例子”,“cpp_interface”);
创建一个名为matrixlib
对于这个库,在工作流脚本中遵循以下步骤:生成一个库定义文件,定义任何缺失的构造,构建接口,然后测试接口。如果需要遍历发布流程,可以采取其他步骤来恢复参数并启用流程外执行模式。然后,您可以与其他用户共享已发布的界面。
创建工作流脚本
导航到可写文件夹并调用clibPublishInterfaceWorkflow
.在对话框中,指定工作流脚本的名称,例如:publishmatrixlib.mlx
.工作流脚本具有帮助您发布接口的步骤。使用脚本保存发布接口的参数。您可以在所有平台上使用相同的脚本。
请注意
工作流脚本允许您在多个MATLAB会话期间重复生成、定义、构建和测试接口。方法重新创建的库定义文件中不会保存编辑覆盖现有定义文件选择。
第一步:生成
首先,生成库定义文件。工作流脚本包含生成c++接口活动编辑器任务。使用此任务可以选择组成库的文件,并设置生成库定义文件的选项。
选择文件
类定义了该库matrixOperations.hpp
头文件和Windows®matrixOperations.lib
库文件。的库类型是头文件和编译的库文件
,为默认设置。
设置库起始路径,浏览到该文件夹fullfile (matlabroot“外来的”,“例子”,“cpp_interface”)
并点击选择文件夹.
单击,选择头文件浏览打开文件matrixOperations.hpp
.
头文件取决于cppshrhelp.hpp
头文件。导航到中的文件夹库起始路径并点击选择文件夹.
要选择已编译的库文件,请浏览到glnxa64
文件夹,并打开libmwmatrixOperations.so
文件。
选择配置
在本例中,c++编译器设置为g + +
.
改变接口库名称来matrixlib
.使用此名称clib
从MATLAB中调用函数。例如,创建一个库对象垫
,在命令提示符中输入:
clib.matrixlib.Mat
验证输出文件夹是一个可写文件夹。
选择覆盖现有定义文件复选框,以便在开发接口时重新创建定义文件。
指定可选的c++库设置
构建这个库的接口不需要可选的c++库设置。
指定可选定义配置
构建这个库的接口不需要可选的定义配置。
显示结果
默认情况下,在生成定义文件时,该函数将显示可用的构造(库中的类和函数)。在开发界面时,还要选择显示不可用结构复选框,以便您可以看到哪些构造可能需要包含更多信息。
生成定义文件
点击生成定义文件.该脚本显示其进度并创建库定义文件definematrixlib.m
在指定的输出文件夹中。
警告:用于生成接口文件的文件中的某些c++语言构造不受支持,不能导入。金宝app使用g++编译器。定义文件definematrixlib。m包含MATLAB支持的10个构造的定义。金宝app-完全定义了5个构念。- 5个结构部分定义并注释掉。要在接口中包含5个未定义的结构,取消注释并完成definematrixlib.m中的定义。要构建接口,请调用build(definematrixlib)。
MATLAB接口到matrixlib库类clib.matrixlib.Mat构造函数:clib.matrixlib.Mat(clib.matrixlib.Mat) clib.matrixlib.Mat()方法:uint64 getLength()没有属性定义函数clib.matrixlib.updateMatByX(clib.matrixlib.Mat,int32)
在多个会话上启用开发工具
在发布接口时,可以遍历步骤、关闭和重新打开publishmatrixlib.mlx
脚本,或重新启动MATLAB。按照这些部分中的说明来帮助您处理这些工作流。
第二步:定义
在创建库定义文件时,MATLAB报告了部分定义了五个构造。要完整地定义功能,请编辑definematrixlib.m
文件。要编辑该文件,请运行定义部分。
滚动库定义文件以查找用于这些构造的注释代码块。MATLAB不能自动确定这些函数使用的参数的大小。
setMat
类的c++方法垫
getMat
类的c++方法垫
copyMat
类的c++方法垫
addMat
c++包函数updateMatBySize
c++包函数
基于文档的matrixOperations
库,您可以为其提供值<形>
在参数定义语句中。有关更多信息,请参见定义缺少的SHAPE参数.
对于每个构造,取消定义它的语句的注释。
取代
<形>
具有这些值的参数。构造
参数名称
c++的定义
描述
取代
<形>
与价值setMat
src
Int [] SRC
矩阵的长度由输入参数定义
len
.“兰”
getMat
RetVal
Int const
输出参数的长度由输入参数定义
len
.“兰”
copyMat
桌子
Int * dest
的长度
桌子
是由输入参数定义的len
.“兰”
addMat
垫
垫子const *垫子
该函数接受单个参数
垫
论点。1
updateMatBySize
加勒比海盗
Int * arr
的长度
加勒比海盗
是由输入参数定义的len
.“兰”
保存并关闭定义文件。
要验证在文件中所做的编辑,请运行确认编辑并运行summary部分。修复文件中报告的任何错误。的
总结
函数显示接口现在包含setMat
,getMat
,copyMat
,addMat
,updateMatBySize
.
MATLAB接口到matrixlib库类clib.matrixlib.Mat构造函数:clib.matrixlib.Mat(clib.matrixlib.Mat) clib.matrixlib.Mat()方法:setMat(clib.array.matrixlib.Int) clib.array.matrixlib.Int getMat(uint64) uint64 getLength() copyMat(clib.array.matrixlib.Int)无属性定义函数int32 clib.matrixlib.addMat(clib.matrixlib.Mat) clib.matrixlib.updateMatByX(clib.matrixlib.Mat,int32) clib.matrixlib.updateMatBySize(clib.matrixlib.Mat,clib.array.matrixlib. mat)
3 .构建
为了建立matrixlib
接口到库,运行构建部分的脚本。
构建接口文件matrixlibInterface。对于clib包matrixlib。接口文件` matrixlibInterface。所以'内置文件夹'/home/Documents/MATLAB/matrixlib'。要使用该库,请将接口文件文件夹添加到MATLAB路径。目录“/ home /文件/ MATLAB / matrixlib”)
请注意
您可以重复生成、定义和构建步骤。但是,在库中显示帮助或调用函数后,就不能更新definematrixlib
定义文件在同一MATLAB会话。重新启动MATLAB或通过更改接口库名称参数中的选择配置部分。
4 .测试
设置并复制运行时库
运行设置并复制运行时库部分。这个库没有额外的运行时依赖项,因此不需要修改命令。
启用进程外执行模式
如果需要更改定义文件,则运行此命令设置在进程外调用接口库的能力,以便不必重新启动MATLAB。有关更多信息,请参见加载进程内或进程外的c++库.
在接口库上调用帮助
要显示接口库的帮助,请运行在接口库上调用帮助部分。
编写代码调用和测试接口库
中的代码部分编写代码调用和测试接口库要编写这些测试:
matObj = clib.matrixlib.Mat;创建一个Mat对象intArr = [1,2,3,4,5];matObj.setMat (intArr);%将值设置为内tarrretMat = matObj.getMat(5)显示值
retMat =只读clib.array.matrixlib.Int与属性:尺寸:5可调整大小:0
分享接口
若要与另一个MATLAB用户共享接口,请创建工具箱安装(.mltbx
)文件。使用中的说明分发MATLAB接口到c++库:
将工具箱文件夹设置为您的
matrixlib
文件夹,其中包含接口文件matrixlibInterface.so
.放置已编译的库文件
libmwmatrixOperations.so
在同一个文件夹里。将名称空间(调用语法)标识为
clib.matrixlib
.