Domanda

Parte del mio lavoro quotidiano consiste nel mantenere ed estendere le applicazioni VB6 legacy.Un motore comune è scritto in C/C++ e VB6 utilizza queste funzioni per migliorare le prestazioni.

Quando si tratta di programmazione asincrona, un'interfaccia C non è sufficiente e ci affidiamo ai controlli COM per inviare eventi a VB6.

Il mio problema è che quando registro il controllo in VB6, VB carica questo controllo in memoria e non lo scarica finché non esco dall'IDE VB6.Poiché il controllo viene sempre caricato, non riesco a ricompilarlo in VC6 perché il file DLL è bloccato.

Una soluzione che ho trovato non è abilitare il controllo in VB ma utilizzare il file CreateObject() con il nome completo del mio controllo.Il problema quindi è che devo dichiarare il mio controllo come Oggetto perché VB6 non sa nulla dell'interfaccia che sto utilizzando e non ho accesso a IntelliSense, il che è una seccatura.

Qualche idea su come posso dire a VB6 di scaricare i controlli dopo aver chiuso l'applicazione o direttamente nell'IDE?

È stato utile?

Soluzione

Sono abbastanza sicuro che non esista un buon modo per forzare VB6 a scaricare il controllo.

Ecco cosa faccio...invece di eseguire Visual C e Visual Basic fianco a fianco, esegui VB6 Sotto V.C.:

  1. Carica VC
  2. Apri il progetto contenente i tuoi oggetti COM
  3. Modificare, cambiare, ecc.
  4. In VC, imposta l'eseguibile di output su VB6.EXE con gli argomenti della riga di comando appropriati per caricare l'area di lavoro VB6
  5. Ora premi F5 per avviare l'IDE VB6 e caricare il tuo progetto VB6
  6. Quando desideri modificare nuovamente il codice COM, esci da VB6.EXE, apporta le modifiche e premi nuovamente F5.Finché salvi il tuo spazio di lavoro, VB6 ricorderà quali finestre avevi aperto e tutte le impostazioni del tuo progetto.

Vantaggi di questo metodo:

  • È possibile impostare punti di interruzione nell'oggetto COM ed eseguirne il debug utilizzando un debugger di origine completo
  • Puoi tranquillamente eseguire il debug in C e VB allo stesso tempo
  • Ogni volta che VB6 è in esecuzione, ha sempre la versione più recente delle DLL COM
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top