可以用MATLAB库编译器生成C共享库。很多用于创建独立应用程序的mcc选项也可以用于创建C共享库。
1.生成C共享库
用mcc命令生成C共享库有多种语法。
语法一:
code.matlab
mcc -l options mfilename1 mfilename2...mfilenameN
该语法将列出的函数编译为C共享库并生成C打包器代码以便集成到其它程序。其中options为选项参数,可以设置很多参数,实现不同的输出效果,具体可以参见MATLAB文档。mfilename1, mfilename2, …, mfilenameN为各m文件的名称。
语法二:
code.matlab
mcc -W lib:libname -T link:lib
该语法与语法一是等价的。libname为库名。
2.生成C打包器代码
上面的语法也可以生成C打包器代码。下面的语法只生成C打包器代码。
code.matlab
mcc -c options mfilename1 mfilename2...mfilenameN
该语法与下面的语法等价。
code.matlab
mcc -W lib:libname -T codegen
3.C共享库示例
下面的例子用几个M文件创建一个C共享库。还包括一个调用共享库的独立驱动程序。
把下面的文件从<matlabroot>\extern\examples\compiler目录下复制到你的工作目录。
code.matlab
<matlabroot>\extern\examples\compiler\addmatrix.m
<matlabroot>\extern\examples\compiler\multiplymatrix.m
<matlabroot>\extern\examples\compiler\eigmatrix.m
<matlabroot>\extern\examples\compiler\matrixdriver.c
注意:matrixdriver.c包含独立应用程序的主函数。
使用下面的命令创建共享库。
code.matlab
mcc –B csharedlib:libmatrix addmatrix.m multiplymatrix.m eigmatrix.m -v
-B csharedlib选项是一个束选项,它扩展为
code.matlab
-W lib:<libname> -T link:lib
-W lib:<libname>选项让MATLAB编译器生成一个函数打包器,名称为libname。-T link:lib选项指定目标输出为共享库。