***TclCompilerって? [#le12d08f]
TclProに含まれているバイトコードコンパイラです。~
-機械語にコンパイル*しません*
-速度が速く*なりません*

TclCompilerの目的はソースを隠すことにあります。TclProは紆余曲折の末、今は機能を追加してTclDevKitと名前を変え、ActiveStateが売っています。また、TclProはTcl8.3で止まったままですが、ソースコードとバイナリは全てSourceForgeに置かれていて自由に使うことができます。TclDevKitは8.4対応なので最新の開発環境が使いたくてソースを隠したい人はこっち買ってね♥みたいな。~~

さて。実際のところ使ってみたいのはTclCompilerだけなので、こいつだけTcl8.4対応にしてパッケージにしてみました。8.4から追加されたeqとか使えます。インストールは普通のパッケージのインストールと同じで、解凍してライブラリのパスに置いてください。~
http://reddog.s35.xrea.com/software/tclcompiler1.4.zip (Windows用)

~

***使い方 [#n16ed92d]
test.tcl
 set str "たのしいTclプログラム $tcl_version"
 puts $str
このようなファイルを用意します。

tclshをおもむろに起動して次のコマンドを入力します。
 package require compiler
 compiler::compile test.tcl
 exit

これでtest.tbcというバイトコードにコンパイルされたファイルができます。実行するにはtbcloadというパッケージが必要ですが、ActiveTclにはデフォでインストールされているので、そのまま
 tclsh test.tbc
で実行することができます。Freewrap、Starpackなどで使いたいときはtbcloadを適当にくっつけてやれば動くと思います。拡張子はtbcにしていますが、tclにしても動きます。

***コメントをどーぞ [#r5978425]
-早速まねして利用しました。が、使っているシステムがtcl/tk8.2版だった為か、8.4版が必要とのメッセージが出て中断してしまいました。最新の8.4版を導入して再トライしてtbc型ファイルに変換できました。更に欲をかいてtbcファイルをfreewrapでexe型に変換を試みましたがTclPro ByteCode Loader が利用できないとかで変換できませんでした。かなり期待したのですが今一歩で断念です。 -- [[お父さん]] &new{2006-02-23 21:25:36 (木)};
-freewrapだと1つのラッピング実行ファイルの中から直接tbcloadを呼び出すのは無理です。tbcloadを外に出してauto_pathへパスを通すか、一度ディスク上に書き出す処理を自分で書いてください。Starkitだと、tbcloadも1つの実行ファイル中に含められるんですけどね。 -- [[reddog]] &new{2006-02-24 08:30:58 (金)};

#comment
----
[[CategoryTclTk]]

HTML convert time: 0.004 sec.