Als mein dll in Release-Build Verknüpfung ich -VC++/defaultlib Ausgabe
1> LINK: Warnung LNK4098: defaultlib 'mfc80d.lib' Konflikte mit der Verwendung von anderen Libs; Verwendung/NODEFAULTLIB: Bibliothek
1> LINK: Warnung LNK4098: defaultlib 'mfcs80d.lib' Konflikte mit der Verwendung von anderen Libs; Verwendung/NODEFAULTLIB: Bibliothek
1> LINK: Warnung LNK4098: defaultlib 'MSVCRTD.lib' Konflikte mit der Verwendung von anderen Libs; Verwendung/NODEFAULTLIB: Bibliothek
Hinzufügen/VERBOSE, sehe ich die folgenden (Snippet): ...
1> D Suche: \ Microsoft Visual Studio 8 \ VC \ atlmfc \ lib \ mfc80d.lib:
1> gefunden "public: virtual __thiscall AFX_MODULE_STATE :: ~ AFX_MODULE_STATE (void)" (?? 1AFX_MODULE_STATE @@ UAE @ XZ) 1>
referenzierte in mfcs80.lib (dllmodul .obj) 1> Loaded mfc80d.lib (MFC80D.DLL)1> Gefunden "long stdcall AfxWndProc (struct HWND__ *, unsigned int , unsigned int, long)" (? AfxWndProc @@ YGJPAUHWND __ @@ IIJ @ Z)
1> Referenced in mfcs80.lib (dllmodul.obj) 1> Loaded mfc80d.lib (MFC80D.DLL)
...
Wenn ich das richtig bin zu interpretieren, bedeutet der Linker irgendwie Anrufe aus dem (optimiert) Bibliothek mfcs80 löst, als Anrufe in die (nicht optimierten) Bibliothek mfc80D. Wie kann das sein??
Als ich hinzufügen /NODEFAULTLIB:mfc80d.lib die Warnungen sind weg, aber ich bin nicht ruhig mit ihm noch. Als Nebenwirkung ist das Modul in der Tat von sporadischen unerklärlichen Abstürzen auf dem Zwischen Links leiden, die nur durch ein Re-build gelöst werden. Ich verwende VS2005.
[Edit:] hat den Titel defaultlib aufzunehmen, hoffentlich besser das Thema konzentrieren. Ich tun eine explizite Linie sehen
verarbeitet /DEFAULTLIB:mfc80d.lib
im/VERBOSE Ausgang zu sagen, unter vielen anderen (nicht-debug) default Libs. Woher kommt das? Wie kann ich das beheben?
Danke!
Dank - aber ich überprüft alle Projekte (und alle einzelnen Dateien), und sie sind alle mit/MD zusammengestellt. Ich habe sehr wenige externe Abhängigkeiten: version.dll, shlwapi.dll und eine 3rd-Party-Komponente, die ich mit Abhängigkeit-Walker inspiziert und scheint mit den richtigen CRT-Versionen zu verknüpfen (nicht-debug). Ist der Schalter/MD tatsächlich der einzige Zugriff auf den Schalter/DEFAULTLIB? Gibt es nicht noch einen anderen Input, der es hätte durcheinander bringen können? –