主要内容

调用C共享库

使用一个或多个MATLAB®编译器SDK™在C应用程序中生成的C共享库:

  1. 在应用程序中包含为每个库生成的头文件。

    每个生成的共享库都有一个名为libname.h

  2. 初始化MATLAB运行时通过调用MCLMC初始化

  3. 使用mclRunMain在使用MATLAB生成的共享库的驱动程序代码中调用C函数。

    mclRunMain ()为在共享库中包装MATLAB代码的执行提供了一种方便的跨平台机制。

    小心

    不要使用mclRunMain ()在…上雨衣如果应用程序提供自己的完整图形环境。

  4. 声明变量和进程输入参数。

  5. 初始化MATLAB运行时打电话给临床应用作用此函数用于设置全局MATLAB运行时状态和使能的构建MATLAB运行时实例。

    打电话给mclinitializapplication()每个应用程序执行一次函数。它必须在任何其他MATLAB API函数之前调用。您可以将应用程序级选项传递给该函数。mclinitializapplication()返回一个布尔状态码。

    小心

    避免发行cd调用前从驱动程序应用程序发出的命令临床应用。不这样做可能会导致系统故障MATLAB运行时初始化。

  6. 对于应用程序中包含的每个C共享库,调用该库的初始化函数。

    初始化函数执行库本地初始化。它解压缩可部署归档文件并启动MATLAB运行时实例,并提供执行该归档文件中的代码所需的信息。命名标准库初始化函数libname初始化(). 此函数返回一个布尔状态代码。

    请注意

    在窗户上®,如果要让共享库调用MATLAB共享库,请使用MATLAB库初始化函数(例如。,初始化、终止、mclInitialize、mclTerminate)在调用期间无法从共享库调用开始时(DLL_ATTACH_PROCESS)调用。无论中间共享库是隐式加载还是显式加载,这都适用。将调用放在德勒曼()

  7. 调用库中的函数,并处理结果。(这是该计划的主体。)

    请注意

    如果驱动程序应用程序显示MATLAB figure窗口,请调用mclWaitForFiguresToDie在调用之前终止功能及mclTerminateApplication在以下两个步骤中。

  8. 当应用程序不再需要给定的库时,调用该库的终止函数。

    terminate函数释放与库的MATLAB运行时实例。库终止函数名为libname终止().一旦库被终止,该库导出的函数就不能在应用程序中再次调用。

    小心

    签发初始化打完电话<自由>终止调用(无论库是否相同)会导致不可预知的结果。

  9. 当应用程序不再需要调用任何共享库时,请调用mclTerminateApplicationAPI函数。

    此函数释放应用程序使用的应用程序级资源MATLAB运行时.一旦调用这个函数,就不能再调用应用程序中的共享库了。

  10. 清理变量、关闭文件并退出。

下面的示例来自矩阵c说明了上述所有步骤。

从C驱动程序应用程序调用C共享库

使用时的限制MATLAB作用加载库

不能使用MATLAB函数加载库在MATLAB中加载一个用MATLAB编译器SDK

有关使用的详细信息,请参见加载库,请参阅在已部署应用程序中调用共享库

另见

||||

相关的话题