2011-10-21 23 views
1

私はCOMコンポーネントを持っています。 32ビットXPマシンでregsvr32を使って登録しました。今私は私のコンソールアプリケーションでそれからクラスをインスタンス化しようとすると、アプリケーションはちょうど例外を与えることなく、終了します。なにか提案を??COMコンポーネントを使用しようとしています

COM dllはABCServer.dllです。失敗したコード、ライン1上にあるとき、私はF10をクリックすると、アプリケーションは単にCOMコードは、おそらくいくつかのためにC/C++ abort()を呼び出し

+1

'try..except'を試しましたか?いくつかのコードを表示してください... – Marco

+1

もっと明確にするためにコードを投稿する価値があります –

+3

あなたのイベントログに誤りがないかチェックしましたか? – Polity

答えて

2

終了デバッグ中

try 
    { 
    ILookUp LP = new LookUp(); 
    ABCServer Svr = LP.LookUpServer(hostname, port); 
    } 
    catch(Exception ex) 
    { 
    Console.WriteLine(ex.message); 
    } 

コントロールは、2行目に到達したことがありません理由(またはそれに相当するものがCOM DLLの実装言語に含まれているもの)。また、COMサーバーはインプロセスであるため、すぐにプロセス全体が終了します。

C++例外はCOM境界を通過できないことに注意してください(これらは明示的に「ISupportErrorInfo」によってマーシャルされている必要があります)。 COM DLLで例外が発生したが、COM DLL実装コードによって正しく捕捉されて処理されなかった場合、abort()が呼び出された可能性があります。

COM DLLのデバッグ情報がある場合は、アンマネージコードのデバッグを有効にしてください(プロジェクトプロパティの[デバッグ]タブまたは[プロセスにアタッチ]ダイアログの[選択]ボタンから)ルート問題を診断します。

関連する問題