2011-12-15 16 views
1

現在、Qtインストールで提供されているサンプルプロジェクトCom App(Qt_folder \ Examples \ 4.7 \ activeqt \ comapp)ActiveQt COMアプリケーション例 - Windowsレジストリに登録されていないCOMサーバ(Qt4.7.4)

私は、Windows、Qt Creator 2.3.0およびMinGwコンパイラでバージョン4.7.4を使用しています。

したがって、サンプルプロジェクトはコンパイルされて正常に実行されますが、COMサーバー情報はレジストリに登録されていないようですが、スクリプトからアクセスできないため、レジストリにUIDも見つかりませんCOMサーバーが登録されていないことを確認します。

私は3日前から解決策を見つけようとしています。私は絶望的になり始めています。 何か助けを歓迎します。

p.s.申し訳ありませんが、私の母国語ではありません

+0

Qt + MinGW COMの準備ができましたか(あなたはcomappプロジェクトのコンパイルに成功したと思いますか?) – menjaraz

+0

私はQt exampleフォルダからcomappサンプルを開いた後、Qtクリエータからコンパイルします。私は特別なことをしなかった。 – Gojir4

答えて

0

Qtがこれをフードの下で調べても、あなたのスレッドがCOMのためにCoInitializeExを呼び出して初期化されていると確信していますか?

私は仕事中にいくつかのCOMとQtを使用していましたが、これは時には見落とされることがあります。ここ

CoInitializeEx Function

関数を用いた例です。

MyClass::MyClass() 
{ 
    // Make this call before attempting to access COM. 
    if(SUCCEEDED(CoInitializeEx(0, COINIT_APARTMENTTHREADED))) 
    { 
     // This single thread has been initialized for COM usage. 
     // Alternatively you can use COINIT_MULTITHREADED instead 
     // of COINIT_APARTMENTTHREADED if you require threaded 
     // support. 
    } 
    else 
    { 
     // Failed, still must call uninitialize. 
     CoUninitialize(); 
    } 
} 

MyClass::~MyClass() 
{ 
    CoUninitialize(); 
} 
+0

返信ありがとうございます。 CoInitializeExが呼び出されたことをどのように確認できますか?私はそれがQtによって処理されると思った。 MingGWまたはVSコンパイラを使用していますか? Visual Studio 2008でビジュアルスタジオアドインを使用してプロジェクトをインポートすると、正常に動作していることがわかりました。私はこの問題を保留にしたので、最後の投稿から別の解決策を試しませんでした。しかし、今私は私のプロジェクトのためにそれを解決する必要があるように私はすぐに再起動されます。 – Gojir4

+0

@ Gojir4、クラスのCOMの初期化の例を含めるように私の答えを編集しました。私はVS2008を使用しています。これはVC9です。 – Matthew

+0

@ Gojir4、CoInitializeExが呼び出されたかどうかを確認する必要はありません。もう一度呼び出すと、スレッドがすでに初期化されている場合はS_FALSEが返されます。戻り値に関係なくCoInitializeExを呼び出す場合は、CoUninitializeを必ず呼び出してください。 – Matthew

0

COMインターフェイスを正しく動作させる唯一の方法は、VSからQt VSアドインを使用してコンパイルすることです。それは私のために働いて、私はVisual Studio 2008を使用しました。 Building ActiveQt (COM) applications with MinGW

しかし、とにかくこれは、COMインターフェイスを使用してQtソフトウェアをコンパイルできるようにMicrosoft VSライセンスを持っている必要があるため、問題を解決しません。 (VSアドインはVS Expressエディションと互換性がありません)

ありがとうございました。

関連する問題