1

私は現在、Qt インストール (Qt_folder\Examples\4.7\activeqt\comapp) で提供されるサンプル プロジェクト Com App を使用しようとしています。

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

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

3日前から解決策を見つけようとしていますが、必死になり始めています。どんな助けでも大歓迎です。

ps私の英語で申し訳ありませんが、それは私の母国語ではありません

4

2 に答える 2

0

COM インターフェイスを適切に動作させる唯一の方法は、Qt VS アドインを使用して VS からコンパイルすることです。Visual Studio 2008 を使用しました。この投稿を参照してください: MinGW を使用した ActiveQt (COM) アプリケーションの構築

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

ご協力いただきありがとうございます。

于 2012-07-11T11:23:25.633 に答える
0

Qt が内部でこれを処理しているかどうかはわかりませんが、スレッドが を呼び出して COM 用に初期化されていることは確かCoInitializeExですか?

私は仕事でいくつかの COM と Qt を使用してきましたが、これは見過ごされることがあります。

CoInitializeEx 関数

関数の使用例を次に示します。

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();
}
于 2012-07-02T23:52:32.247 に答える