3

もともとx86用にビルドされたC++ATL COM DLLがあり、dllはx86用にビルドされた.NET4.0アプリによって消費されています。すべて正常に動作します。

x64用のCOMdllを再コンパイルし、c:\windows\system32\regsvr32(x86 dllの登録を解除した後)を使用して登録した後、VisualStudioの[参照の追加]ウィンドウにCOMDLLが表示されないため、HKCRおよびHKLM\Softwaresのregキーをエクスポートしましたdllのx64バージョンとx86バージョンが登録されていて、キーが欠落していない場合、それぞれのキーは正しいdllの場所を指しています。

さらに、x64 dllを登録した後、ファイルがあるフォルダーに移動して選択することでdllへの参照を追加できますが、それでも実行に失敗します(.netアセンブリがx64に設定されます)。次のエラーが発生します。

System.Runtime.InteropServices.COMException(0x80040154):CLSID {00000000-0000-0000-0000-A797AD238051}のコンポーネントのCOMクラスファクトリの取得に失敗しました。次のエラーが原因です:80040154クラスが登録されていません(HRESULTからの例外:0x80040154( REGDB_E_CLASS NOTREG))。System.RuntimeType.CreateInstanceSlow(Boolean publicOnly、Boolean skipCheckThis、Boo lean fillCache)at System.RuntimeType.CreateInstanceDefaultCtor (ブールpublicOnly、ブールskipVisibil ityChecks、ブールskipCheckThis、ブールfillCache)at System.Activator.CreateInstance(Type type、Boolean nonPublic)

私はかなりの時間をオンラインで検索してきましたが、リモートで近くにあるもの、このようなものを見た人、またはおそらく使用できるデバッグツールを見つけられませんでしたか?

ちなみに、私はdllを所有していません。所有者は、マシン上に構築されたx64 dllを見ることができますが、他の2台のマシンで試しましたが、どちらでも機能しませんでした。

4

1 に答える 1