调用C共享库

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

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

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

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

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

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

    谨慎

    不要使用mclRunMain ()Mac如果应用程序自带完整的图形环境。

  4. 声明变量和处理输入参数。

  5. 初始化MATLAB运行时通过调用mclInitializeApplication函数。这个函数设置全局变量MATLAB运行时状态和使能的构建MATLAB运行时实例。

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

    谨慎

    避免发行cd调用之前从驱动程序应用程序发出的命令mclInitializeApplication.如果不这样做,就会导致失败MATLAB运行时初始化。

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

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

    请注意

    在Windows上®,如果你想让你的共享库调用一个MATLAB共享库,MATLAB库初始化函数(例如,Initialize, Terminate, mclInitialize, mclTerminate . Initialize)无法从共享库中调用开始时(DLL_ATTACH_PROCESS)调用。无论中间共享库是隐式加载还是显式加载,这都适用。在…之后打电话开始时()

  7. 调用库中的函数,并处理结果。(这是课程的主体部分。)

    请注意

    如果你的驱动程序显示MATLAB图形窗口,包括调用mclWaitForFiguresToDie在调用之前终止功能和mclTerminateApplication在以下两个步骤中。

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

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

    谨慎

    发出一个<自由>初始化调用后<自由>终止调用(无论库是否相同)会导致不可预知的结果。

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

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

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

下面的例子来自matrix.c说明了上面的所有步骤。

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

当使用限制MATLAB函数loadlibrary

不能使用MATLAB函数loadlibrary在MATLAB中装入一个C共享库构建用MATLAB编译器SDK

有关使用的更多信息loadlibrary,请参阅在已部署应用程序中调用共享库(MATLAB编译器)。

另请参阅

||||

相关的话题