ライブラリがあり、swig を使用して同じライブラリの tcl バインディングを生成しました。このように生成された dll は、元の lib dll が xyz.dll を使用している場合、xyz_tcl.dll です。しかし、dll を読み込もうとすると、「無効なコマンド名 "MZ"」と表示されます。その理由を教えてください。
質問する
445 次
2 に答える
4
これMZ
はほぼ確実に DLL の最初の数バイトです (ファイル形式の「マジック ナンバー」です)。
source xyz_tcl.dll
それはうまくいきません。これには、Tcl と統合するコンパイル済みの C コードが含まれていますが、Tcl スクリプトは含まれていません。代わりに、次のことを行う必要があります。
load xyz_tcl.dll
もちろん、パッケージ (必要な DLL とファイルを含むディレクトリ) にビルドする必要があります。pkgIndex.tcl
これにより、代わりに次のようなことができます。
package require xyz
(このファイルには、必要に応じpkgIndex.tcl
て他のファイルを使用してパッケージを定義する方法が含まれています。)load
source
于 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 に答える