現在、私が作ったシンプルなシステムでCOM DLLを使用しようとしています。すべてが正常にコンパイルされますが、実行時にCoCreateInstaceがS_OKを返していますが、何とか私のオブジェクトポインタがNULLを返しています。COMオブジェクトのインスタンス化エラー
このインターフェイスポインタは、クラスヘッダーに作成されます。最も奇妙なことは、メソッドスタックに同じポインタ型をインスタンス化すると正しいオブジェクトが生成されますが、後で__hookを呼び出すとBASE comクラスを作成しようとするとアクセス違反が発生することです。
役に立つかもしれないいくつかの他の側面
:CoInitalizeExでプログラムを実行しようとしましたはCOINIT_MULTITHREADEDとCOINIT_APARTMENTTHREADED
プロジェクトとして始まったが、それにCOM DLLを使用するDLLです
新しいスレッドを開始せずに同じ方法を試しましたが、エラーは継続します。
私はテストプログラム(スレッドなし、実行可能)を作成しました。オブジェクトは正常に作成され、正しくフックされました。だから私の推測それは何かに関連するDLL自体または関連するスレッドです。
PS:ボーナスの質問として、GoogleがCOMに関連して好都合なものを返さないのはなぜですか? :)
この方法では、私が作ったサンプルアプリケーションも失敗してしまうので、私はそうは思わない。 –