Ich habe eine MFC Extension DLL, die eine C++ - Klasse exportiert, und ich muss das Verhalten einer Klassenmethode ändern. Die Änderungen haben keinen Einfluss auf die Signatur von Methoden der Klasse.Neu kompilieren MFC Extension DLL ändert Einstiegspunkte von exportierten Funktionen
Ich möchte die Module, die die "lib" -Datei der zuvor freigegebenen Version dieser Bibliothek verwendet, nicht neu kompilieren.
Was passiert, wenn die Änderungen die Eingangspunkte der Funktionen ändern?
Zum Beispiel die Adresse des Konstrukteurs verändert:
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)
Sollte ich die Module neu kompilieren, die die Bibliothek trotzdem verwenden?
Ich testete die neu kompilierte Bibliothek - mit neuen Einstiegspunkten - mit den freigegebenen ausführbaren Dateien und alles funktioniert gut. Ich bin nicht sicher, dass dieses Szenario einige Nebenwirkungen versteckt.
Wann ist es notwendig, eine ausführbare Datei zu einer DLL zu rekompilieren?
Wann wird die Binärkompatibilität unterbrochen?
Da er scheint, Klassen zu verwenden, ist eine weitere Instanz, die subtilen Bruch verursachen kann, zusätzlich zu Ihrem Kommentar zum Speicherort, wenn neue Membervariablen innerhalb einer Klasse hinzugefügt werden, die sich in der DLL befindet. –
@NikBougalis, danke für die Erinnerung - Ich habe meine Antwort hinzugefügt, um diese Situation zu decken. –
Danke an alle für Ihre Hilfe. – sam