Domanda

Ho bisogno di alcuni chiarimenti di base sul collegamento statico C ++. Ho un file chiamato data_client.lib. Esistono tre utenti indipendenti per il file di libreria a.exe, b.exe e c.exe. Esiste un servizio chiamato data_server.exe per il quale data_client.lib è l'interfaccia. In realtà, ho aggiunto un'altra funzione a data_server.exe e l'interfaccia corrispondente a data_client.lib. Dato che solo a.exe ha bisogno di funzionalità extra, ho creato solo a.exe. Ho spedito data_server.exe, data_client.exe e a.exe come patch. Ora, b.exe e c.exe si bloccano in modo casuale / incoerente in modo anomalo

  

mfc42u! CException :: `RTTI completo   Localizzatore oggetti '+ 0x10

Ha senso? Se creo anche b.exe e c.exe, l'incidente non si verifica. Funziona così?

È stato utile?

Soluzione

  

In realtà, ho aggiunto un'altra funzione a data_server.exe e l'interfaccia corrispondente a data_client.lib.

Non è chiaro da ciò esattamente cosa è stato aggiunto alla tua libreria. Tuttavia, se si tratta di un nuovo metodo o di metodi aggiunti a una classe (anziché solo ad alcune nuove funzioni autonome), è molto probabile che la ricompilazione di tutto risolva il problema. La vtable potrebbe essere o non essere stata spazzata via dalle modifiche.

È anche possibile che i tuoi arresti anomali non abbiano assolutamente nulla a che fare con questo e ci siano altri problemi in corso ... ma dalla tua descrizione, i miei soldi sono su un problema di vtable. Se fossi in me, ricompilerei b.exe e c.exe e testerei di nuovo prima di indagare su altri problemi.

Altri suggerimenti

Forse non hai dipendenze esplicite, ma alcune delle intestazioni del tuo progetto usano o mettono le informazioni in modo implicito nella tua biblioteca.

Non conosco l'errore, ma le applicazioni b.exe e c.exe utilizzano una versione precedente della lib di associazione per comunicare con una versione più recente di data_server.exe. Alcuni indici v_table potrebbero essere disattivati ??o qualcosa del genere se hai aggiunto una funzione. Devi sicuramente ricostruire tutte le librerie.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top