LibraryFunctionDeclaration

LibraryFunctionDeclaration["extName",lib,type]

ライブラリ lib からの type 型のライブラリ関数 extName をコンパイルされたコードで使用するために公開する関数宣言を表す.

LibraryFunctionDeclaration[name->"extName",lib,type]

名前 name の関数をコンパイルされたコードでエイリアスする.

LibraryFunctionDeclaration[nameSpec,type]

関数がコンパイルされたときにライブラリがロードされるものと仮定する.

詳細

  • LibraryFunctionDeclarationは宣言の記号表現で,そのままでは評価されない.
  • LibraryFunctionDeclarationは,CompilerEnvironmentAppendToの中およびFunctionCompileのような関数の第1引数で使うことができる.
  • name が与えられていなければ,LibraryFunction["extName"]が使われる.
  • ライブラリは,ロードされていなければFunctionCompileが呼ばれたときにロードされる.
  • LibraryFunctionDeclarationで参照されたライブラリはWolfram言語カーネルと同じプロセスで実行される.
  • FindLibrary$LibraryPath上のライブラリの場所を見付けるために使われる.
  • Cの型の大きさはプラットフォームによって異なるので,Cで生成されたライブラリと接続する際は,"Integer32""Real32"よりも"CInt""CFloat"等を使うとよいだろう.
  • LibraryLoadを使ってライブラリを手動でロードすることができる.手動でロードされたライブラリの関数は,ライブラリを指定せずにLibraryFunctionDeclarationで参照できる. »

例題

すべて開くすべて閉じる

  (1)

外部ライブラリからの関数宣言を表す:

そのライブラリの関数を使ってプログラムをコンパイルする:

スコープ  (2)

関数に明示的な名前を与える:

LibraryLoadを使って手動でライブラリをロードする:

すでにカーネルにロードされている関数を参照するLibraryFunctionDeclarationを作成する:

ライブラリをアンロードした後でコンパイルされた関数を使うとクラッシュすることがある.

アプリケーション  (1)

OpenSSLからのSHA256関数の宣言を表す:

OpenSSLを使って文字列のSHA256ハッシュを計算する関数をコンパイルする:

文字列のハッシュを計算する:

計算されたハッシュを組込み関数Hashと比較する:

Wolfram Research (2022), LibraryFunctionDeclaration, Wolfram言語関数, https://reference.wolfram.com/language/ref/LibraryFunctionDeclaration.html.

テキスト

Wolfram Research (2022), LibraryFunctionDeclaration, Wolfram言語関数, https://reference.wolfram.com/language/ref/LibraryFunctionDeclaration.html.

CMS

Wolfram Language. 2022. "LibraryFunctionDeclaration." Wolfram Language & System Documentation Center. Wolfram Research. https://reference.wolfram.com/language/ref/LibraryFunctionDeclaration.html.

APA

Wolfram Language. (2022). LibraryFunctionDeclaration. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/LibraryFunctionDeclaration.html

BibTeX

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

BibLaTeX

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