在 MATLAB 环境下访问外部函数的共享库文件,必须首先把该库文件加载到内存中。一旦加载成功,就能直接在 MATLAB 中直接请求关于函数的任何信息。而当不再需要该库时,就应当及时把库文件从内存中卸载以节省内存开销。 加载库 语法:loadlibrary(„shrlib‟ ,‟ hfile‟ ) 其中 shrlib 为加载的动态链接库文件名(filename.dll),hfile 为头文件名,它包含函数原型。例如,当加载包含 MATLAB 中 mx程序的 libmx库时,可以使用下列语句。 hfile=[matlabroot‟ \extern\include\matrix.h‟ ]; loadlibray(„libmx‟ , hfile) 卸载库 语法:unloadlibrary libmx 使用两个函数可以获取加载库的信息: libfunctions(„libname‟ ) or libfunctions libname libfunctionsview(„libname‟ ) or libfunctionsview libname 这两个函数的不同之处在于显示结果的方式不同,后者是以图形的方式显示在新的窗口中。而前者返回库libmx中有哪些可用的函数。请看示例: libfunctions libmx Methods for class lib.libmx: mxAddField mxGetFieldNumber mxIsLogicalScalarTrue mxArrayToString mxGetImagData mxIsNaN mxCalcSingleSubscript mxGetInf mxIsNumeric mxCalloc mxGetIr mxIsObject mxClearScalarDoubleFlag mxGetJc mxIsOpaque mxCreateCellArray mxGetLogicals mxIsScalarDoubleFlagSet 如果加上命令开头-full,则可以显示函数返回值的细节。 libfunctions libmx -full Methods for class lib.libmx: [mxClassID, MATLAB array] mxGetClassID(MATLAB array) [lib.pointer, MATLAB array] mxGetData(MATLAB array) [MATLAB array, voidPtr] mxSetData(MATLAB array, voidPtr) [lib.pointer, MATLAB array] mxGetPr(MATLAB array) [MATLAB array, doublePtr] mxSetPr(MATLAB array, doublePtr) uint8 mxIsFinite(double) uint8 mxIsInf(double) 值得注意的是,这两个函数返回值的类型均是 MATLAB 的数据类型,虽然函数是利用 C 语言编写的。 调用库函数 一旦库函数被加载到了内存空间,只要指定库名、函数名和变量就可以使用 calllib 函数调用库中的任何函数了。语法格式: calllib(„libname‟ ,‟ funcname‟ ,arg1,… ,argn) 下列语句显示如何操作: hfile=['C:\MATLAB7\extern\include\matrix.h']; loadlibrary („libmx ‟...