Da ich ein langjähriger POSIX/Linux/BSD C-Entwickler bin und jetzt versuche, ein paar Dinge mit Visual C++ 2010 zu tun, bin ich irgendwie mit den Werkzeugen beschäftigt, weil es nicht ganz so funktioniert wie das GCC-Toolset tut. In der Theorie, zumindest nach den Dokumenten, scheint es sehr ähnlich (und ich bin mir sicher, dass es ist), aber ich sehe nicht die Dinge, die ich erwarte zu sehen.Windows C Runtime-Bibliothek nicht verknüpfen, wie ich es erwarte?
In diesem Fall versuche ich eine C-Bibliothek für die spätere Verwendung in einem .NET-Projekt zu erstellen, und ich möchte darauf achten, später Laufzeitkonflikte zu vermeiden. Mein Gedanke war, eine statische Bibliothek zu erstellen, die mit einer DLL-Version der C-Laufzeit (msvcr100d.dll in der Debug-Konfiguration) verbunden ist, also setze ich das /MDd
-Flag. Wenn ich dumpbin.exe
verwende, um die resultierende LIB-Ausgabe zu überprüfen, zeigt es jedoch keine Abhängigkeiten oder Importe an.
Zwei Fragen, wirklich:
- Ist dies eine schlechte Idee in erster Linie? Soll ich stattdessen eine DLL erstellen oder eine Verknüpfung mit der statischen CRT herstellen?
- Warum zeigt
dumpbin.exe
die Abhängigkeit von der CRT, wenn ich/MDd
verwende?
aktualisieren: Choosing the Correct C/C++ Runtime Library ist ziemlich hilfreich und informativ. Ich versuchte die dumpbin
Beschwörung, die er vorschlägt, und die Ausgabe zeigt, dass die Bibliothek wie erwartet auf msvcrtd
verlinkt, aber das beantwortet meine zweite Frage nicht wirklich oben.
Wow. Ich bin immer noch Google suchen dieses Problem, und diese Frage ist bereits # 4 in Suchen mit "Dumpbin" und "Abhängige". Sie müssen diese Site ständig crawlen. –
Wenn Sie nicht C++/CLI verwenden, sollte es fast identisch sein. Mit dem gesagt ... Code ... Bitte !! Wenn/Wenn Sie die Frage auf einen Punkt aktualisieren, an dem ich bestimmte Fragen beantworten kann, werde ich eine Antwort auf Ihre Fragen veröffentlichen. –
@Ramhound: um ... der Code ist für diese Frage nicht relevant. Dies ist ein Werkzeugproblem. Ich habe spezifische Fragen bereits artikuliert. Wenn du sie nicht ansprechen kannst, liegt es nicht daran, dass ich das Problem nicht erklärt habe. –