実行ファイルの作成
CCompilerDriverパッケージを使うと,コンピュータにインストールされているCコンパイラが使えるようになる.オプションCompilationTargetを"C"と設定すると,CCompilerDriverパッケージはWolframシステムコンパイラによって自動的に使われるものであるが,自分でもC言語で書いたソースコードから独自の実行ファイル,ライブラリ,オブジェクトファイルを構築するのに使うこともできる.
Needs["CCompilerDriver`"];
Needs["SymbolicC`"]lib = CFunction["int", "main", {{"int", "argc"}, {"char", CDereference[CArray["argv", {}]]}},
CBlock[{CReturn[0]}]];
str = ToCCodeString[lib]CreateExecutable[str, "funExe"]入力が1つまたは複数のCコードからきている場合は,それらはCreateExecutableにリストで与えることができる.
生成された実行ファイルの拡張子は,システムに応じて加えられる.
拡張子が.tmである入力ファイルを与えると,CreateExecutableはそれをWolfram Symbolic Transfer Protocol(WSTP)テンプレートファイルであるとして扱い,その処理にwsprepを使う.
オプションと設定についてのより詳しい情報はコンパイルの設定セクションに記載されている.
WSTP実行ファイル
WSTPはプログラム間通信のためのWolfram言語独自の高レベル記号インターフェース標準である.CCompilerDriverを使うと,Wolfram言語内からWSTPプログラムを構築することがでいるため, WSTPを使うときに便利である.特筆すべき便利な機能に,拡張子が.tmの入力ファイルが与えられた場合,CreateExecutableはそれをWSTPテンプレートファイルであるとして扱い,その処理にwsprepを使うというものがある.
Wolfram言語に同梱のWSTPデベロッパキットには多数の例が含まれている.以下はその場所である.
examplesDir = FileNameJoin[{$InstallationDirectory, "SystemFiles", "Links", "WSTP", "DeveloperKit", $SystemID, "WSTPExamples"}];files = FileNames["addtwo.*", examplesDir];これでCCompilerDriverパッケージを使ってこれらを構築することができる.まずパッケージをロードしなければならない.
Needs["CCompilerDriver`"]C++のソースファイルのコンパイルと,WSTPへのリンクに適したオプションを設定する:
exe = CreateExecutable[files, "addtwo", "Language" -> "C++", "TransferProtocolLibrary" -> "WSTP"]Install[exe]Global`AddTwo[5, 6]詳細はWSTPのドキュメントを参照のこと.
関連するガイド
関連するテクニカルノート
-
▪
- CCompilerDriverユーザガイド ▪
- はじめに ▪
- ライブラリの作成 ▪
- オブジェクトファイルの作成 ▪
- 個々のコンパイラ ▪
- リファレンス