2012-02-01 6 views
7

Una macchina con MSVBVM60.dll ver 6.0.97.82, diceva VECCHIO. Altra macchina con MSVBVM60.dll ver 6.0.98.15, diciamo NOVITÀ. Exe creata dalla nuova macchina si blocca in linea new ADODB.Connection sulla donazione macchina OLD seguente erroreExe Crash In ADODB.Connection con "La classe non supporta l'automazione"

Errore di runtime '430': classe non supporta l'automazione o non sostegno previsto interfaccia

Come arrivare liberarsi di questo? Il mio obiettivo principale è quello di eseguire l'exe sulla macchina OLD mentre viene creato su una NUOVA macchina. Per evitare di disturbare la configurazione della macchina NUOVA, ho provato a annullare la registrazione della versione precedente e registrare la versione più recente sulla macchina OLD, ma non ci sono riusciti. C'è qualche altra DLL usata da ADODB.Connection o ho bisogno di fare qualcosa di completamente diverso per sbarazzarsi di questo?

+0

quali sistemi operativi sono i vostri vecchi e nuovi computer che eseguono? – UnhandledExcepSean

risposta

11

Questo non ha nulla a che fare con le versioni di runtime VB e ha più a che fare con le librerie ADO (come allude la riga di errore) ed è stato causato da Microsoft che rompe la compatibilità nelle loro librerie ADO.

KB article 2517589 spiega perché e la soluzione che è essenzialmente da ricompilare contro la compatibilita typelib.

+0

Ho seguito tutti i passaggi nell'articolo KB dato, tutto è andato perfettamente bene, ho costruito l'exe e si è schiantato di nuovo. Plz si riferisce ai miei commenti sotto la risposta di Jon Egerton – bjan

+0

Seguendo tutti i passaggi sul mio computer di compilazione e ricompilandomi, l'ho risolto per me qualche giorno fa. – Deanna

+0

Se il progetto continua a fare riferimento alla "Libreria XXX Microsoft ActiveX Data Objects", significa che sta ancora creando una versione incompleta. È necessario rimuovere tale riferimento e ricompilare la "Libreria BackCompat Microsoft ActiveX Data Objects 6.0". – Deanna

0

Potrebbe essere più semplice applicare una patch all'intero runtime VB6 sulla macchina OLD: è possibile ottenere un download da here.

Il runtime VB6 viene distribuito come pacchetto, quindi non è consigliabile inserire solo alcune DLL.

Si consiglia inoltre di controllare che le due macchine in esecuzione utilizzino la stessa versione di MDAC, in particolare che la macchina OLD abbia la versione installata a cui fa riferimento nel progetto.

+0

Non voglio applicare patch alla macchina OLD in quanto si tratta di macchine client. Sì, le versioni di MDAC sono diverse, ma, sto facendo funzionare VS6.0 e VS2010 entrambi su NUOVA macchina allo stesso tempo. È possibile installare entrambe le versioni di MDAC nello stesso computer? – bjan

+0

Sì, va bene avere molte versioni. In VB6 si potevano avere versioni MDAC da 2.1 a 2.6 che potevano essere installate (tutte allo stesso tempo). La versione utilizzata dal tuo progetto deve esistere sul client. –

+1

Si noti inoltre che Vista + ha versioni specifiche dei runtime VB che non è possibile sostituire e NON DEVE installare su una versione precedente di Windows. qualsiasi cosa prima che Vista usi i runtime SP6. – Deanna

0

La risposta accettata non ha funzionato per me. I seguenti passi hanno fatto.

  1. Strumenti -> Riferimenti
  2. Deseleziona:
    • Microsoft ActiveX Data Objects 6.1 libreria
    • Microsoft ActiveX Data Recordset 6.0 Biblioteca
    • Microsoft ADO Ext. 6,0 per DDL e per la sicurezza
  3. Check:
    • Microsoft ActiveX Data Objects 2.8 libreria
    • Microsoft ActiveX Data Recordset 2.8 Biblioteca
    • Microsoft ADO Ext. 2,8 per DDL e per la sicurezza
Problemi correlati