此示例创建了一个matlab®接口到c++库基质化
适用于Windows.®.对于一个Linux.®示例,参见Linux上的共享c++库发布接口.该过程包括:
生成定义文件(deffenematrixlib.mlx.
)。
修改定义文件以完成MATLAB无法自动转换的任何定义。
构建库界面。
有关更多信息,请参见将MATLAB接口构建到C ++库.
MATLAB为您提供了一个C ++库和标题文件,可以在此示例中使用。文件位于此文件夹中及其子文件夹中:
fullfile(matlabroot,“外来的”那“例子”那“cpp_interface”);
生成界面的第一步是准备必要的文件夹和文件和调用clibgen.generatelibrarydefinition.
生成定义文件。
验证选定的c++编译器
这个例子使用了MinGW64编译器。确认您已选择此编译器。
墨西哥人-设置cpp
或者,您可以选择Visual Studio®编译器。设置值libPath
如《识别c++库文件步。
创建发布者文件夹
为MATLAB接口文件创建一个文件夹。这是一个可选步骤。
pubpath = [pwd +“\ matrixexample”];如果~ isfolder (pubPath) mkdir (pubPath)结尾cd (pubPath)
识别c++库文件
标识C ++库工件的名称和路径。共享库使用特定编译器构建。图书馆有两个版本。一个是Mingw64编译器构建的,另一个是Microsoft Visual Studio 2017编译器。设置价值libPath
基于您选择的编译器。
productpath = fullfile(matlabroot,“extern”那“例子”那“cpp_interface”);使用MingW-W64编译器构建的库%链接libpath = fullfile(ProductPath,“win64”那“mingw64”);%要链接到使用Visual Studio编译器构建的库,请使用此路径:% libPath = fullfile(productPath,"win64","microsoft");%头文件名hppFile =“矩阵迁移.HPP”;包含所有标题文件的文件夹的%完整路径hppPath = productPath;%包含包含文件的文件夹的完整路径ipath = hpppath;%库文件名libfile =“矩阵operations.lib”;
命名界面
默认情况下,MATLAB创建一个名为基质化
.对于本例,将名称更改为matrixlib
.
libname =“matrixlib”;
称呼clibgen.generatelibrarydefinition.
要创建接口,必须指定:
标题文件名称母系.HPP.
及其位置。
使用包含文件的文件夹的路径使用“IncludePath”
论点。
库文件的名称和位置矩阵operations.lib.
, 使用“库”
论点。
可选择,您可以:
使用该库重命名库'包裹名字'
论点。
控件显示生成消息'verbose'
论点。
clibgen.generatelibrarydefinition(fullfile(hpppath,hppfile),......“IncludePath”,ipath,......“图书馆”,fullfile(libpath,libfile),......“PackageName”,libname,......“returncarrays”假的,......%处理输出作为matlab阵列“verbose”,真的)
警告:文件中用于生成接口文件的一些c++语言结构不受支持,也不被导入。金宝app使用MinGW64编译器(c++)编译器。生成定义文件definematrixlib。mlx和数据文件'matrixlibData.xml'包含MATLAB支持的10个结构的定义。金宝app5个构造需要额外的定义。要在接口中包含这些构造,请编辑definematrixlib.mlx中的定义。构建使用构建(definematrixlib)。
验证库。
definematrixlib;
视图功能
虽然有些构造需要额外的定义,但您可以查看可用的功能。如果此功能足以满足您的需求,则可以继续使用构建库接口步。否则,继续执行这一步定义了结构.
摘要(Deffenematrixlib)
matlab interface to matrixlib库类clib.matrixlib.mat构造函数:clib.matrixlib.mat()clib.matrixlib.mat(clib.matrixlib.mat)方法:uint64 getLength()没有属性定义函数clib.matrixlib.updatematbyx(clib。MatrixLib.mat,Int32)
要定义缺少的结构,请单击generateLibraryDefinition
中编辑定义的输出消息deffenematrixlib.mlx.
.有关编辑此文件的信息和指定参数的示例,请参见定义MATLAB签名的缺失信息.
搜索定义文件setMat
方法和取消注释定义它的语句。定义src
参数,在这默认
声明,替换<形>
和“兰”
.
DefineArgument(SetMatdefinition," src "那“clib.array.matrixlib.int”那“输入”那“兰”);
在方法中getMat
,定义RetVal
通过更换输出<形>
和“兰”
.
defineOutput (getMatDefinition“retval”那“int32”那“兰”);
在方法中copyMat
,定义Dest.
替换的论点<形>
和“兰”
.
DefineArgument(副本,“桌子”那“clib.array.matrixlib.int”那“输入”那“兰”);
在函数addMat
,定义垫
参数的函数addMat
通过替换<形>
和1
.
DefineArgument(AddMatdefinition,“垫”那“clib.matrixlib.Mat”那“输入”1);
在函数updatematbysize.
,定义arr.
替换的论点<形>
和“兰”
.
defineargument(Updatematbysizedefinition,“arr”那“clib.array.matrixlib.int”那“输入”那“兰”);
保存并关闭定义文件。
创建MATLAB接口文件matrixlibinterface.dll.
.
构建(deffenematrixlib)
构建界面文件'matrixlibinterface.dll'。界面文件'matrixlibinterface.dll'文件夹c:\ documents \ matrixexample \ matrixlib'。要使用库,请将界面文件文件夹添加到MATLAB路径。
一定要单击消息中的链接以将接口文件添加到路径。
测试接口,请参见在Windows接口中调用函数到C ++共享库.
clibgen.generatelibrarydefinition.