Tcl と Expect を DLL だけで考えるのはやめてください。Tcl DLL と Expect DLL は両方とも、それぞれのソフトウェアのコア機能を実装していますが、完全に自己完結型ではありません。
- Tcl インタープリターは、ファイル システムから (動的に) ロードされる一連のライブラリ ファイルに依存します。これらのファイルには、エンコーディング ファイル、タイムゾーン情報ファイル、およびいわゆる「コア パッケージ」が含まれます (ただし、これらに限定されません)
http
。
- 通常のTcl パッケージである Expect パッケージは、
pkgIndex.tcl
パッケージのコア機能を含む DLL を適切にロードして初期化する方法を「認識」し、実際にパッケージをTcl のパッケージ ローダー。
したがって、これらすべてを機能させるには、大まかに次のチェックリストに従う必要があります。
コードに埋め込む Tcl インタープリターが適切に初期化されていることを確認し、外部パッケージをロードできるようにします。
完全なExpect パッケージを、組み込みインタープリターが外部パッケージを見つけると予想する場所の 1 つに配置します。
パッケージ化機構がどのように機能し、特別なグローバル変数がどのように初期化されるかを理解するために、必ずthis、this、およびthisをお読みください。auto_path
package require Expect
プログラム内で、Expect パッケージの存在を必要とするスクリプトを呼び出して、それをロードします。
または、組み込みインタープリターで Tcl C API への適切な呼び出しを実行して、Expect パッケージの DLL を直接ロードし、後で実行するスクリプトですぐに使用できるようにすることもできます。
さらに別の方法 (スターターとして正しく理解するのは難しい) は、いわゆる「ベースキット」または「tclkit」を使用することです。これは、仮想ファイル システムを使用して特定の Tcl パッケージが含まれている Tcl ライブラリです。実行時にその VFS からロードできます。これらの*キットはクールですが、適切なキットの作成を習得することは、「通常の」インタープリターとメインプログラムと共にファイルのセットとして配布される通常のパッケージを埋め込むよりも困難です。
1 つの特記事項: ActiveTcl™ 製品のライセンスで、そのさまざまな部分を切り取って製品で使用することが許可されているかどうかはわかりません。IANALですが、そのライセンス条項に違反している可能性があります。安全のために、ソースから Tcl と Expect の両方をビルドします — それは難しいことではありません。