0

ライブラリがあり、swig を使用して同じライブラリの tcl バインディングを生成しました。このように生成された dll は、元の lib dll が xyz.dll を使用している場合、xyz_tcl.dll です。しかし、dll を読み込もうとすると、「無効なコマンド名 "MZ"」と表示されます。その理由を教えてください。

4

2 に答える 2

4

これMZはほぼ確実に DLL の最初の数バイトです (ファイル形式の「マジック ナンバー」です)。

source xyz_tcl.dll

それはうまくいきません。これには、Tcl と統合するコンパイル済みの C コードが含まれていますが、Tcl スクリプトは含まれていません。代わりに、次のことを行う必要があります。

load xyz_tcl.dll

もちろん、パッケージ (必要な DLL とファイルを含むディレクトリ) にビルドする必要がありますpkgIndex.tclこれにより、代わりに次のようなことができます。

package require xyz

(このファイルには、必要に応じpkgIndex.tclて他のファイルを使用してパッケージを定義する方法が含まれています。)loadsource

于 2012-04-26T08:02:49.273 に答える
2

何か (tcl?) が DLL をスクリプトとして実行しようとしていると思います。Windows 実行可能ファイルの最初の 2 バイトは 'M' と 'Z' です。

歴史的な理由から、すべての Win32 実行可能ファイルには、実際の Win32 PE ヘッダーの直前に小さな 16 ビット MS-DOS ヘッダーがあり、16 ビット ヘッダーの署名バイトは "MZ" です。

于 2012-04-26T06:56:32.523 に答える