37

私の日常業務の一部は、従来の VB6 アプリケーションの保守と拡張です。一般的なエンジンは C/C++ で記述されており、VB6 はこれらの関数を使用してパフォーマンスを向上させます。

非同期プログラミングに関しては、C インターフェイスでは不十分であり、COM コントロールに依存して VB6 へのイベントを発生させます。

私の問題は、VB6 でコントロールを登録すると、VB がこのコントロールをメモリにロードし、VB6 IDE を終了するまでアンロードしないことです。コントロールは常にロードされているため、DLL ファイルがロックされているため、VC6 で再コンパイルできません。

私が見つけた解決策は、VB でコントロールを有効にするのではなく、コントロールCreateObject()の完全な名前を使用することです。問題は、VB6 は私が使用しているインターフェイスを何も認識せず、IntelliSense にアクセスできないため、コントロールをオブジェクトとして宣言する必要があることです。これは苦痛です。

アプリケーションを終了した後、または IDE で直接コントロールをアンロードするように VB6 に指示する方法はありますか?

4

1 に答える 1

27

VB6 に強制的にコントロールをアンロードさせる良い方法はないと確信しています。

これが私がすることです... Visual C と Visual Basic を並べて実行する代わりに、VCの下でVB6 を実行します。

  1. VCをロードする
  2. COM オブジェクトを含むプロジェクトを開きます
  3. 編集、変更など
  4. VC で、出力実行可能ファイルを VB6.EXE に設定し、適切なコマンドライン引数を使用して VB6 ワークスペースをロードします。
  5. F5 を押して VB6 IDE を起動し、VB6 プロジェクトをロードします。
  6. COM コードを再度変更する場合は、VB6.EXE を終了し、変更を行ってから、もう一度 F5 キーを押します。ワークスペースを保存する限り、VB6 は開いていたウィンドウとすべてのプロジェクト設定を記憶します。

この方法の利点:

  • COM オブジェクトにブレークポイントを設定し、完全なソース デバッガーを使用してデバッグできます。
  • C と VB で同時に楽しくデバッグできます
  • VB6 が実行されているときはいつでも、常に最新バージョンの COM DLL を持っています。
于 2008-08-20T03:58:09.347 に答える