Frage zur Dll Kompilierung
-
Hallo, ich habe folgende Frage.
Ich habe zu meiner Anwendung eine Dll Datei erstellt. Nun habe ich festgestellt, dass diese gewisse Abhängigkeiten hat, genauergesagt titt auf manchen Systemen ein Fehler auf, weil Laufzeitbibliotheken fehlen (msvcp71.dll, msvcr71.dll).
Kann ich meine Dll auch so kompilieren, dass diese Abhängigkeit nicht besteht?
Ich habe versucht, msvcrt.lib als Eingabe für den Compiler zu verwenden, aber die nimmt er einfach nicht mit rein.
Währe dankbar für einen Tipp,danke
Gruß Micha
-
Hast du eine normale Win32-DLL oder eine MFC-Dll am Anfang ausgewählt?
-
Ich habe Win32-DLL gewählt.
-
Hast du es als Release kompiliert? die Debug-Versionen schreien nämlich gerne mal nach der MSVC-Dll

-
Das hat nichts mit Debug- oder Release-Version zu tun. Du musst in den Projek-
Einstellungen dafür sorgen das du das Laufzeitsystem statisch zu deine DLL
linkst. Per Default ist nämlich die die dynamische Version vorgegeben.
-
Redhead schrieb:
Das hat nichts mit Debug- oder Release-Version zu tun. Du musst in den Projek-
Einstellungen dafür sorgen das du das Laufzeitsystem statisch zu deine DLL
linkst. Per Default ist nämlich die die dynamische Version vorgegeben.Ja klar und genau das ist der Unterschied zwischen den Standardeinstellungen der Projektkonfigurationen "Release" und "Debug". Wenn in den Projektoptionen bei "Codeeinstellung" die Debug-Bibliotheken auswählt, hast du eine Abhängigkeit auf deine entsprechende MSVCRT-DLL und bei den Release-Libraries wird es statisch dazugelinkt und ist daher auch auf Fremdsystemen(auf deinem Entwicklungsrechner ist die DLL natürlich vorhanden) ohne weitere Abhängigkeiten lauffähig.
-
Also bis zur Version VC6 ist es jedenfalls nicht so. Die Linkereinstellungen
sind in Debug- als auch Release-Version identisch nur wird halt einmal gegen
die Debug und das andere Mal gegen die Release-Version gelinkt.Nachtrag

Laut Nachfrage bei Arbeitskollege ist das auch unter VC 7.1 noch immer so.
-
wo genau kann man das einstellen??
-
Das hat nichts mit Release oder Debug zu tun. Es gibt beide Varianten sowohl statisch als auch dynamisch, und das kann man sich auch so im drop-down aussuchen.
Bei VC++ 6 ist das bei den Project Options unter C/C++ / Code Generation und heißt "Use run-time library".
-
meinst du wo man zwischen MultiThreaded und SingleThreaded auswählen kann?
Bei mir ist /MT also Multithreaded gewählt.
Was wäre korrekt? Gibt da ja 6 Möglichkeiten...
-
Ja, je 3 für Release und 3 für Debug. Davon jeweils eine dynamische (msvcrt.dll / msvcr70.dll) und dann noch statisch mit und ohne Threads. Welche du da nehmen willst, hängt halt davon ab, ob du Threads verwendest.