2

Windows x64 用の ActiveStates TCL バージョン 8.6.0.0 を使用しています。私が呼び出すスクリプトでは:

package require tcom

Tcom はインストールに含まれていますが、次のエラーが表示されます。

couldn't load libary "C:/TCL/lib/tcom/tcom.dll": Invalid argument while executing
"load C:/TCL/lib/tcom/tcom.dll"
("package ifneeded tcom 3.9" script)
invoked from within
"package require tcom"

誰かが実際に何が欠けているのか理解していますか? C:/TCL/lib/tcom/tcom.dll がシステムにインストールされていますが、「無効な引数」とは何ですか?

4

1 に答える 1

3

これは 32 ビット/64 ビットの問題のようです。同じプロセス内で異なるビット サイズを混在させることはできません†</sup>。また、ビルドのサイズとシステム アーキテクチャを一致させることが重要であるという信念の下で、ActiveTcl 8.6.0.0 の 64 ビット ビルドをインストールした可能性があります。良いアイデア。残念ながら、そうではありません。64 ビット Windows 用の ActiveTcl 8.6.0.0 は、商業上の理由から‡</sup>、外部パッケージの 64 ビット ビルドにアクセスするには、追加のプロダクト キーが必要です。しかし、とにかくパッケージがインストールされており (おそらく ActiveTcl の以前のインストールから?)、それは 32 ビット ビルドのようです。

間違ったサイズのバイナリ ライブラリ ビルドを使用することによる誤解を招くエラーは残念です (Windows と POSIX の微妙な違いと、Tcl が 2 つの間のマッピングを処理する方法に起因する比較的小さなバグです) が、それだけだと思います。

最も簡単な修正は次のとおりです。

  1. インストールした ActiveTcl のすべてのコピーをアンインストールしてから、
  2. C:\Tclディレクトリが本当に削除されていることを確認してから、
  3. ActiveTcl 8.6.0.0の32 ビット ビルドをインストールします(64 ビットの Windows 7 や Windows 8 などの Win64 ベースのシステムで問題なく動作します)。あなたがそれをしたら、あなたは
  4. パッケージの完全なセットをインストールするために使用teacup updateすると、Tcom が機能するはずです。

†</sup>ここでは当てはまらない特別なトリッキーな ARM を除きます。
‡</sup>それらを正当化しようとするつもりはありません。それは彼らの決定であり、私のものではありません。

于 2013-05-31T08:12:08.390 に答える