1

コマンド mytest が定義されている Tcl への C 拡張があります。拡張子は正しくコンパイルされています (私は Linux を使用しており、拡張子は *.so です)。たとえば、tclsh を起動して、次のように使用できます。

$ tclsh
% load /path/extension.so
% mytest abc
...

しかし、次の内容でファイル myscript.tcl を作成すると:

load /path/extension.so
mytest abc

次に、エラーが発生します:

$ tclsh myscript.tcl 
invalid command name "mytest"
    while executing
"mytest abc"
    (file "myscript.tcl" line 2)

Ubuntu 14.04 で bash を使用しています。Tcl 8.6。

編集 1: 私の質問/問題は、スクリプトを引数として tclsh を使用したいということです。このスクリプトは、mytest およびその他の実装された関数がエラーなしで動作するように拡張機能を適切にロードする必要があります。

編集 2: ええと、tcl シェル内でコマンド「source myscript.tcl」を使用すると、結果は同じになります。myscript.tcl に絶対パスを使用しても、エラーは同じです --- "load" は警告なしで実行されますが、無効なコマンド名 "mytest"を取得するため、それについてはわかりません。スコープに問題があるのか​​もしれませんが、tclsh を対話的に使用すると正しく動作します。

4

1 に答える 1