ライブラリの作成
CCompilerDriverパッケージを使うと,コンピュータにインストールされているCコンパイラが使えるようになる.オプションCompilationTargetを"C"と設定すると,CCompilerDriverパッケージはWolframシステムコンパイラによって自動的に使われるものであるが,自分でもC言語で書いたソースコードから独自の実行ファイル,ライブラリ,オブジェクトファイルを構築するのに使うこともできる.
このセクションではこれらのツールを使って実行ファイルを作る方法について述べる.ライブラリを作るための中心となる関数はCreateLibraryである.これらの例では,SymbolicCを使う.
Needs["CCompilerDriver`"];
Needs["SymbolicC`"];lib = CFunction[{"int"}, "fun", {}, CBlock[{CReturn[0]}]];
str = ToCCodeString[lib]CreateLibrary[str, "funLib"]入力が1つまたは複数のCコードからきている場合は,それらはCreateLibraryにリストで与えることができる.
生成されたライブラリの拡張子は,作成されるライブラリのタイプに応じて加えられる.
Windowsでは,スタブLIBファイルとエキスポートEXPファイルも作られる.
オプションと設定についてのより詳しい情報はコンパイルの設定セクションに記載されている.
Wolfram Libraries
Wolfram言語カーネルは関数を直接呼び出すことができるように,ダイナミックライブラリのロードをサポートしているこれについてはWolfram Library Link のドキュメントに記載されている.CCompilerDriverパッケージを使うと作業の多くをWolfram言語内から実行することができるため,これらのライブラリの構築に便利である.
Wolfram Librariesのメインとなるヘッダファイルには,種々のプラットフォームで動作するCコードを書くことを容易にするいくつかの定義が含まれている.
CCompilerDriverパッケージにはCコードのサンプルが含まれている.マシンにCコンパイラがインストールされているなら,ドキュメントに示すようにサンプルを使ってみることができる.
Needs["CCompilerDriver`"];パッケージ内のサンプルソースファイルを探し,それを表示する.
demoFile = FileNameJoin[ {$CCompilerDirectory, "SystemFiles", "CSource", "createDLL_demo.c"}];
FilePrint[demoFile]lib = CreateLibrary[{demoFile}, "testDLL"]適切なCコンパイラがない場合は,コンパイルは失敗し,メッセージが生成される.
このライブラリはWolfram Libraryとして書かれている.したがって,関数はLibraryFunctionLoadを使ってロードできる.
fun = LibraryFunctionLoad[lib, "incrementInteger", {Integer}, Integer]LibraryFunctionを呼び出す.
fun[202]Wolfram Library Link のドキュメントにも例が載っている.
関連するガイド
関連するテクニカルノート
-
▪
- CCompilerDriverユーザガイド ▪
- はじめに ▪
- 実行ファイルの作成 ▪
- オブジェクトファイルの作成 ▪
- 個々のコンパイラ ▪
- リファレンス