APIとのやりとりにサードパーティのCOMライブラリを使用する必要があります。それはOKをインストールしたようだ、と私に提供されているテストハーネスがOKを動作するようだので、DLLに何も問題はないと確信しています。COMを使用しようとすると、クラスが登録されていません(32ビットプロセスからでも)
マイ.NETコードは、この(2015年対中)のようになります。
Type t = Type.GetTypeFromCLSID(new Guid("xxxxx")); //this works ok
object o = Activator.CreateInstance(t); // this throws an error
スローエラーがある:私はメインのものを含むすべてのプロジェクトを確保している
An unhandled exception of type 'System.Runtime.InteropServices.COMException' occurred in mscorlib.dll
Additional information: `Retrieving the COM class factory for component with CLSID {xxxxx} failed due to the following error: 80040154 Class not registered (Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)).`
はIとして(x86のです良い測定のために
を、I:DLL)は32ビットのlibです知っていますlibを次のように再登録しようとしました:Regsvr32 xxxx.dll /s
しかし、それでも同じエラーが発生します。
助けがあれば助かります。ありがとう。
EDIT
メインプロジェクトが実際のx86に設定され、したがって、グレー表示されている "32ビットを好みます"。
プラットフォーム名はC#プロジェクトとはまったく関係ありません。重要な設定は、プロジェクト>プロパティ>ビルドタブ(プラットフォームターゲットと32ビット優先)のジッタ強制オプションです。そして、EXEプロジェクトのための設定だけ、それはプロセスのビット数をロックするものです。この例外に対して*多くの*既存のQ + Aで説明されているように、SysInternalsのプロセスモニタを使用しても問題が解決しない場合は使用してください。 –
なぜdownvote?私は同じ質問がたくさんあることを理解しています。その答えはすべて同じ回答です(32ビット対64) - 私が設定したところまでは同じです。 –