3

アプリケーションをWin7x64マシンに展開するときに問題が発生します。32ビットでx64に再コンパイルできない古いdllをいくつか参照しています。私の開発マシンはx86なので、ここでは問題なく動作します。x64を実行しているすべてのクライアントマシンで、次のメッセージが表示されます。

「クラスが登録されていません(HRESULTからの例外:0x80040154(REGDB_E_CLASSNOTREG))

System.Windows.Forms.UnsafeNativeMethods.CoCreateInstance(Guid&clsid、Object> punkOuter、Int32 context、Guid&iid)で

System.Windows.Forms.AxHost.CreateWithLicense(文字列ライセンス、GUID clsid)

Visual Studio 2010ですべてのターゲットプラットフォームをx86に変更しようとしましたが、役に立ちませんでした。また、「AppdData \ Local \ Apps \ 2.0 ...」インストールフォルダ内のzippy32を使用してクライアントマシンにdllを登録しようとしましたが、「モジュール「Module.dll」がロードされましたが、エントリポイント-ポイントDllRegisterServerが見つかりませんでした。」参照されるすべてのdllに対して。クリーンなx64マシンを使用してみましたが、そうではありません。

これらは競合するdllです(Lead Toolsマルチメディアライブラリに関連):

AxInterop.LTMMLib.dll

AxInterop.MSComctlLib.dll

AxInterop.MSComDlg.dll

(Windows Media Player WinFormsコントロールに関連):

AxInterop.WMPLib.dll

私は多くの解決策をオンラインで調べましたが、どれもうまくいかないようです。どんな入力でも大歓迎です:)

前もって感謝します。

4

1 に答える 1

2

コメントで指摘されているように、Windowsメディアライブラリは問題の原因ではありませんでした。Hans Passantの推奨に従って、LEADTools(x86)がクライアントマシンに手動でインストールされ、問題が解決されました。

有益なコメントをありがとうございました。コメントを回答としてマークすることはできませんが、引用は次のとおりです。

AxInteropファイルは登録しないでください。ターゲットマシンにインストールしなかった可能性のあるActiveXコントロールを使用しています。LTMMLibはLeadTechnologiesの製品であり、ベンダーの推奨インストール手順を使用してください。MSComctlLibとMSComDlgは古いVB6コントロールであり、これらの使用を完全に停止し、同じことを行う.NETクラスに置き換えるのが最善です。WMPLib>は問題になりません。

于 2012-10-17T15:07:25.990 に答える