DeclareCompiledComponent

DeclareCompiledComponent["name",decls]

decls 添加到已编译组件 "name" 中.

DeclareCompiledComponent["name",fieldspec]

将规范 spec 添加到已编译组件 "name" 的指定字段中.

更多信息

  • 已编译组件可用于表示一组已命名的编译器声明.
  • 已编译组件可用于表示可内置到共享库中的编译功能.
  • 可将已编译组件嵌入到小数据包中.
  • DeclareCompiledComponent["name",...] 会创建已编译组件 "name",如果它尚不存在的话.
  • 可通过 CreateCompilerEnvironmentCompilerEnvironmentAppendTo 将已编译组件的声明添加到编译器环境中.
  • 在构建已安装函数和库函数时会使用已编译组件的声明.
  • 可用 BuildCompiledComponent 构建包含已安装函数和库函数的库.
  • 可用 LoadCompiledComponent 加载包含已安装函数和库函数的库.
  • 可给出以下 field 值:
  • "Declarations"与组件一起使用的声明
    "InstalledFunctions"要编译的函数和要将结果嵌入的符号
    "LibraryFunctions"要编译的函数,由 LoadCompiledComponent 恢复
    "RawLibraryFunctions"要编译的可作为库导出的函数
    "LoadingEpilogs"LoadCompiledComponent 加载组件后要运行的函数
    "ExternalLibraries"LoadCompiledComponent 加载组件之前要加载的库
  • 可用单个声明或声明列表给出 "Declarations".
  • 可用规则 symfunc 给出 "InstalledFunctions",指定在加载构建的组件时 func 的编译版本将被安装到符号 sym 中. "InstalledFunctions" 也可以接受规则关联.
  • 也可将符号 sym 赋给 "InstalledFunctions",它实际上相当于声明已安装函数 symsym. 如果 sym 是一个可编译函数的名称(包括在组件中定义的函数),那么它将被编译并安装到符号 sym 中,以便在编译代码之外使用. 也可以给出一个符号列表. »
  • 可用规则 "name"func 给出"LibraryFunctions",指定 func 的已编译版本将出现在 LoadCompiledComponent 的结果中,且名为 "name". 也可用关联给出 "LibraryFunctions".
  • "RawLibraryFunctions" 项以规则 "name"Typed[funcName,ty] 的形式给出. 这将指定该组件构建的库将导出类型为 tyfuncName 的编译版本. 如果编译使用了带有 CompiledComponentRawInterface 的组件,则可以直接引用 funcName.
  • 可用单个函数或函数列表给出 "LoadingEpilogs".
  • 可用单个库或库规范列表给出 "ExternalLibraries". 库规范必须可被 FindLibrary 解析.
  • "InstalledFunctions""LibraryFunctions" 字段包含要编译的源代码. BuildCompiledComponent 对源进行构建并将结果保存到动态库中. 可用 LoadCompiledComponent 加载动态库,以恢复编译结果.
  • "RawLibraryFunctions" 的名称受动态库的格式限制.

范例

打开所有单元关闭所有单元

基本范例  (2)

创建含有声明的已编译组件 "demo"

查看生成的组件:

在对 FunctionCompile 的调用中使用 "demo"

清除组件:

给出一个已编译组件的声明:

编译后的组件对象返回有关组件的信息:

编译后的组件对象具有以下属性:

查看添加到组件的声明:

范围  (5)

在组件中声明一组声明:

声明一个库函数:

声明一个已安装的函数:

提取组件的所有属性:

组件的属性:

组件的声明:

清除组件:

DeclareCompiledComponent 可以提供编译成库的函数:

构建库:

加载库:

从库中调用代码函数:

DeclareCompiledComponent 可定义符号来获取已安装的代码:

声明一个函数存在于组件中:

添加一个仅给出其名称的已安装函数,在编译器中查找定义:

构建组件库:

通过调用已安装函数自动加载组件库:

DeclareCompiledComponent 可以定义符号来获取安装代码:

在组件中声明存在一个函数:

仅根据名称添加一个已安装的函数,在编译器中查找其定义:

构建组件库:

通过调用组件库的安装函数,自动加载组件库:

DeclareCompiledComponent 可以创建一个原始库接口,供其他编译代码使用:

构建组件库:

加载并初始化组件库:

函数库中的函数声明:

编译一个使用该库的函数:

运行调用库的计算:

不使用 LibraryFunctionDeclaration,而是直接使用组件原始接口:

这非常有用,因为组件中的声明可以使用库,而无需重新编译.

使用 "RawLibraryFunctions" 构建的组件库可与 ForeignFunctionLoad 一起使用:

Wolfram Research (2022),DeclareCompiledComponent,Wolfram 语言函数,https://reference.wolfram.com/language/ref/DeclareCompiledComponent.html.

文本

Wolfram Research (2022),DeclareCompiledComponent,Wolfram 语言函数,https://reference.wolfram.com/language/ref/DeclareCompiledComponent.html.

CMS

Wolfram 语言. 2022. "DeclareCompiledComponent." Wolfram 语言与系统参考资料中心. Wolfram Research. https://reference.wolfram.com/language/ref/DeclareCompiledComponent.html.

APA

Wolfram 语言. (2022). DeclareCompiledComponent. Wolfram 语言与系统参考资料中心. 追溯自 https://reference.wolfram.com/language/ref/DeclareCompiledComponent.html 年

BibTeX

@misc{reference.wolfram_2024_declarecompiledcomponent, author="Wolfram Research", title="{DeclareCompiledComponent}", year="2022", howpublished="\url{https://reference.wolfram.com/language/ref/DeclareCompiledComponent.html}", note=[Accessed: 21-November-2024 ]}

BibLaTeX

@online{reference.wolfram_2024_declarecompiledcomponent, organization={Wolfram Research}, title={DeclareCompiledComponent}, year={2022}, url={https://reference.wolfram.com/language/ref/DeclareCompiledComponent.html}, note=[Accessed: 21-November-2024 ]}