1

私は Com Server DLL で作業しており、リクエストを使用して POST を XML ファイルと一緒にマルチパート フォームにしています。Localy、それはうまく機能し、エラーはありません。COM オブジェクトのメソッドを呼び出すと、期待どおりの結果が返されます。

ここで、py2exe を使用して dist バージョンのアプリをビルドし、DLL Com サーバーを regsvr32 に登録しようとすると、次のエラーが表示されます: "ランタイム エラー! ... R6034 アプリケーションが C をロードしようとしましたランタイム ライブラリが正しくありません。..." また、Python コードで requests ライブラリへの参照を削除すると、この問題が発生しないことに気付きました (明らかに、モジュールの主な機能が失われています)。 .

マニフェスト ソリューションを含む C ランタイム DLL を、考えられるすべてのフレーバーで配布してみました。また、マイクロソフトの再頒布可能インストーラーからランタイムをインストールしました。何の効果もありません。ランタイム自体とは何の関係もないと確信しています。

テスト目的で、W7 と XP で仮想マシンを作成しました。regsvr32 で Com サーバーを登録できますが、メソッドを呼び出すとエラーが発生します。ただし、リクエスト lib で POST を作成する行にコメントを付けるか、リクエストが関与しない別のメソッドを呼び出すと、エラーは発生せず、すべて正常に動作しているように見えます。もちろん、すべてが要求ライブラリを中心に展開するため、COM の主要な機能は失われます。そして、私は心から原始的なurllibライブラリを使いたくありません...

私の結論:py2exeとリクエストライブラリに何かあるようです。いくつかの依存関係が欠落している必要があります。py2exe がすべてをパックしているように見えるため、何を、またはなぜ理解することはできませんが... py2exe を使用して COM サーバーを配布する際に問題が発生したことはありません。誰かがpy2exeとリクエストで同様の問題を抱えていましたか???

4

1 に答える 1

0

py2exe com dllの問題に非常に似ているようです。おそらく、C ランタイム DLL をパッケージ化するか、展開先のマシンにVisual C++ 2008 Redistributableをインストールするだけの問題です。

于 2013-04-24T16:56:03.320 に答える