主要内容

调用一个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库初始化函数(例如,初始化,终止,mclInitialize, mclTerminate的过程中不能从共享库调用开始时(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,请参阅在部署的应用程序中调用共享库

另请参阅

||||

相关的话题