Frage

Ein Teil meiner täglichen Arbeit ist die Pflege und Erweiterung älterer VB6-Anwendungen.Eine gemeinsame Engine ist in C/C++ geschrieben und VB6 nutzt diese Funktionen, um die Leistung zu verbessern.

Wenn es um asynchrone Programmierung geht, reicht eine C-Schnittstelle nicht aus und wir verlassen uns auf COM-Steuerelemente, um Ereignisse an VB6 auszulösen.

Mein Problem ist, dass VB, wenn ich das Steuerelement in VB6 registriere, dieses Steuerelement in den Speicher lädt und es erst entlädt, wenn ich die VB6-IDE beende.Da das Steuerelement ständig geladen wird, kann ich es nicht in VC6 neu kompilieren, da die DLL-Datei gesperrt ist.

Eine Lösung, die ich gefunden habe, besteht darin, die Steuerung nicht in VB zu aktivieren, sondern die zu verwenden CreateObject() mit dem vollständigen Namen meiner Kontrolle.Das Problem besteht dann darin, dass ich mein Steuerelement als Objekt deklarieren muss, da VB6 nichts über die von mir verwendete Schnittstelle weiß und ich keinen Zugriff auf IntelliSense habe, was mühsam ist.

Irgendeine Idee, wie ich VB6 anweisen kann, Steuerelemente nach dem Beenden der Anwendung oder direkt in der IDE zu entladen?

War es hilfreich?

Lösung

Ich bin mir ziemlich sicher, dass es keine gute Möglichkeit gibt, VB6 zum Entladen des Steuerelements zu zwingen.

Folgendes mache ich...Anstatt Visual C und Visual Basic nebeneinander auszuführen, führen Sie VB6 aus unter VC:

  1. Laden Sie VC hoch
  2. Öffnen Sie das Projekt, das Ihre COM-Objekte enthält
  3. Bearbeiten, ändern usw.
  4. Legen Sie in VC die ausführbare Ausgabedatei auf VB6.EXE mit den entsprechenden Befehlszeilenargumenten fest, um den VB6-Arbeitsbereich zu laden
  5. Drücken Sie jetzt einfach F5, um die VB6-IDE zu starten und Ihr VB6-Projekt zu laden
  6. Wenn Sie den COM-Code erneut ändern möchten, beenden Sie VB6.EXE, nehmen Sie Ihre Änderungen vor und drücken Sie erneut F5.Solange Sie Ihren Arbeitsbereich speichern, merkt sich VB6, welche Fenster Sie geöffnet hatten und alle Ihre Projekteinstellungen.

Vorteile dieser Methode:

  • Sie können Haltepunkte im COM-Objekt festlegen und es mit einem vollständigen Quelldebugger debuggen
  • Sie können problemlos gleichzeitig in C und VB debuggen
  • Wenn VB6 ausgeführt wird, verfügt es immer über die neueste Version der COM-DLLs
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top