LibraryFunctionDeclaration["extName",lib,type]
ライブラリ lib からの type 型のライブラリ関数 extName をコンパイルされたコードで使用するために公開する関数宣言を表す.
LibraryFunctionDeclaration[name->"extName",lib,type]
名前 name の関数をコンパイルされたコードでエイリアスする.
LibraryFunctionDeclaration[nameSpec,type]
関数がコンパイルされたときにライブラリがロードされるものと仮定する.
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)
dec = LibraryFunctionDeclaration[add -> "addone", "compilerDemoBase", {"CInt"} -> "CInt"];cf = FunctionCompile[dec, Function[Typed[n, "CInt"], add[n]]]cf[4]LibraryLoadを使って手動でライブラリをロードする:
LibraryLoad["compilerDemoBase"];すでにカーネルにロードされている関数を参照するLibraryFunctionDeclarationを作成する:
dec = LibraryFunctionDeclaration["addone", {"CInt"} -> "CInt"];cf = FunctionCompile[dec, Function[Typed[n, "CInt"], LibraryFunction["addone"][n]]]cf[3]アプリケーション (1)
opensslPath = FileNameJoin[...];
dec = LibraryFunctionDeclaration["SHA256", opensslPath, {"CArray"::["CChar"], "CSizeT", "CArray"::["CChar"]} -> "CArray"::["CChar"]];OpenSSLを使って文字列のSHA256ハッシュを計算する関数をコンパイルする:
sha256 = FunctionCompile[dec,
Function[Typed[str, "String"],
Module[{plaintext, ciphertext},
plaintext = Cast[str, "Managed"::["CString"]];
ciphertext = CreateTypeInstance["Managed"::["CArray"::["CChar"]], 32];
LibraryFunction["SHA256"][plaintext, Cast[StringLength[str], "CSizeT"], ciphertext];
CreateTypeInstance["NumericArray", ciphertext, 32]
]
]
]Normal@sha256["This is a test"]計算されたハッシュを組込み関数Hashと比較する:
Normal@Hash["This is a test", "SHA256", "ByteArray"]テクニカルノート
関連するガイド
テキスト
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_2026_libraryfunctiondeclaration, author="Wolfram Research", title="{LibraryFunctionDeclaration}", year="2022", howpublished="\url{https://reference.wolfram.com/language/ref/LibraryFunctionDeclaration.html}", note=[Accessed: 04-November-2026]}
BibLaTeX
@online{reference.wolfram_2026_libraryfunctiondeclaration, organization={Wolfram Research}, title={LibraryFunctionDeclaration}, year={2022}, url={https://reference.wolfram.com/language/ref/LibraryFunctionDeclaration.html}, note=[Accessed: 04-November-2026]}