Ho una DLL di estensione MFC che esporta una classe C++ e ho bisogno di modificare il comportamento di un metodo di classe. Le modifiche non influiscono sulla firma dei metodi della classe.Recompiling MFC Extension DLL modifica i punti di ingresso delle funzioni esportate
Non voglio ricompilare i moduli che hanno utilizzato il file "lib" della versione precedentemente rilasciata di questa libreria.
Cosa succede se le modifiche modificano l'indirizzo dei punti di ingresso delle funzioni?
Ad esempio, l'indirizzo del costruttore cambiato:
Export Ordinal Function Hint Entry Point
[+ ] 3 (0x0003) 2 (0x0002) [email protected]@[email protected] 0x00009CB0 (OLD DLL)
[+ ] 3 (0x0003) 2 (0x0002) [email protected]@[email protected] 0x00009760 (NEW DLL)
Devo ricompilare i moduli che utilizzano la libreria in ogni caso?
Ho testato la libreria ricompilata, con nuovi punti di accesso, utilizzando gli eseguibili rilasciati e tutto funziona correttamente. Non sono sicuro che questo scenario nasconda alcuni effetti collaterali.
Quando è necessario ricompilare un collegamento eseguibile a una DLL?
Quando viene interrotta la compatibilità binaria?
Poiché sembra che utilizzi le classi, un'altra istanza che potrebbe causare una rottura sottile, oltre al commento sulla posizione, è se nuove variabili membro vengono aggiunte all'interno di una classe che risiede nella DLL. –
@NikBougalis, grazie per il promemoria - Ho aggiunto alla mia risposta per coprire questa situazione. –
Grazie a tutti per il vostro aiuto. – sam