8

Py2Exe を使用して (wxPython を使用して) Python プログラムを Windows exe に取り込もうとしていますが、 MSVCP90.dll に関するエラーがあります。py2exe を読んだ後、StackOverflow で実行可能ファイルの生成に失敗すると、このファイルをダウンロードする必要があると表示されます。ただし、すべての対象ユーザーがこのファイルをダウンロードする必要があるとも書かれています。これは私のユーザー (ほとんどの場合、ファイルのダウンロード方法がわからない企業クライアント) にとって非常に不便です。プログラムと一緒にパッケージ化する方法はありますか?

ありがとう!

4

2 に答える 2

10

MSVCP90.dll とは

MSVCP90.dll は、マルチスレッド化された動的な Visual Studio 2008 C ランタイム ライブラリです。通常、ターゲット マシンに一致する CRT があることが確実でない限り、アプリケーションは MSVCP90.dll をパッケージ化する必要があります。任意のパッケージ ソフトウェアを使用して、必要な DLL とソフトウェアをパッケージ化し、配布することができます。

MSVCP90.dll の目的

なぜこの奇妙な dll が必要なのか疑問に思われるかもしれません。CRT は Python にとって目新しいものではありません。C に基づくすべてのアプリケーションは、C ライブラリ関数に大きく依存しています。(malloc、strcpy ..) などの標準 C ライブラリ関数のすべての実装は、これらのライブラリに実装されています。さまざまな種類があり、特定のMSDN Web サイトに詳細が記載されています。 ここに画像の説明を入力

MSVCP90.dll の配布

CRT を配布するときは、使用している CRT によって、CRT の名前の末尾に付いているバージョン番号が異なることを理解しておく必要があります。たとえば、MSVCP90.DLL は、Visual Studio 2008 の CRT です。単一のマシンには、アプリケーションのインストール パスのシステム フォルダーに複数の CRT を含めることができます。

アプリケーションのパッケージ化を計画している場合は、アプリケーションが使用する CRT バージョンを再確認する必要があります。間違った CRT をパッケージしたり、使用したりすると、望ましくない未定義の結果が生じる可能性があります。一般的に言えば、Python インストールで使用する CRT は、パッケージ化する CRT と同じにする必要があります。

正しい MSVCRT の決定

さまざまなバージョンのさまざまな CRT ビルドがあるため、どの CRT をパッケージ化する必要があるかを確認するのは困難です。実行中のアプリケーション (実行可能ファイル) がある場合は、dependencywalkerを使用して正しいバージョンを判断できます。任意の DLL を右クリックしてプロパティをクリックすると、この DLL が選択されている場所が表示されます。 ここに画像の説明を入力

アプリケーションをパッケージ化します。

PyInstallerを使用してアプリケーションをパッケージ化できます。これは、DLL をターゲット マシンに取り込むための便利な方法です。

于 2012-04-08T06:24:23.533 に答える
0

そのdllを含むアプリをexeファイルと同じフォルダーに配信する必要があります。

于 2012-04-08T06:16:03.677 に答える