WinMainCRTStartUp?
-
Danke für den Link, also das man das Programm so klein erzeugen kann wusste ich nicht. Also muss ich nur einen eigenen Entry Point festlegen?
Ich habe so etwas mal nachgestellt, mit STL Strings da ich diese Bibliothek ja gerne statisch linken möchte. Jedoch bekomme ich wieder die gleiche Fehlermeldung.
"Die Anwendung konnte nicht gestartet werden, weil MSVCR90.dll nicht gefunden wurde. Neuinstallation der Anwendung könnte das Problem beheben."Alle Einstellungen die auf der Seite unten aufgeführt sind habe ich genau so übernommen, außerdem verwende ich nicht eine einzige CRT Funktion.
#include <iostream> #include <string> //STL wird statisch gelinkt! (/D_STATIC_CPPLIB) #include <Windows.h> #pragma comment(linker, "/entry:entry") void entry() { std::string sample = "Beispiel"; MessageBox(NULL, sample.c_str(), sample.c_str(), MB_OK); }
Hier mein Projekt mit den Einstellungen: Download
Ich hoffe jemand kann mir helfen.
-
Wenn Du die STL verwenden willst, brauchst Du zwangsläufig die CRT (oder was glaubst Du woher "new" kommt?)!
Dein Problem ist ja nur, dass Du dynamisch linkst und statisch linken solltest!
http://blog.kalmbach-software.de/de/2008/03/05/wie-man-statisch-gegen-die-c-runtime-crt-linkt/
-
Da hätte ich ja lange suchen können. Ich habe gedacht die Zwei sind komplett getrennt. Das ist richtig erbärmlich mit der CRT, sorry wenn ich das so sagen muss.
Wofür gibt es dann überhaupt D_STATIC_CPPLIB?
Wenn ich komplett Statisch linke mit dem Beispiel dann bekomm ich das:
1>LIBCMT.lib(crt0.obj) : error LNK2001: Nicht aufgelöstes externes Symbol "_main".
-
Ja, der Entry-Point einer normalen Anwendung heisst "main"... den hast Du wohl nicht...
-
In deinem Beispiel hast du doch auch "entry" verwendet als entry point? Oder ist das bei dir keine normale Anwendung?
-
Linker|Advanced|Entry Point: entry
-
Wer hat gesagt das ich entry point nicht auf "entry" gesetzt habe? o.O Ich habe alle settings so übernommen ....
-
wmstarter schrieb:
In deinem Beispiel hast du doch auch "entry" verwendet als entry point? Oder ist das bei dir keine normale Anwendung?
Hab ich ich meinem Beispiel die STL verwendet?
-
Ehm, also liegt es jetzt an der stl das ich alle bibliotheken nicht statisch linken kann?
-
wmstarter schrieb:
Ehm, also liegt es jetzt an der stl das ich alle bibliotheken nicht statisch linken kann?
WARUM kannst Du nicht statisch linken????
Fehlermeldung!???Wenn Du die CRT verwendest5 heisst nun mal der Einstiegspunkt "main/wmain"; da kannst Du Dich drehen und wenden wie Du willst...
-
Sorry, habe mich in deinem Beispiel verguckt.
Mir ist erst später aufgefallen das du lstrlen verwendet hast und nicht strlen, somit dachte ich das du auch die CRT verwendet hast, was ja dann doch nicht der Fall ist.Andere Frage, dann hör ich auf zu nerven:
Theoretisch könnte ich ja dann eine andere bzw. kleine CRT verwenden wie zum Beispiel die hier: http://wcrt.sourceforge.net
Wie kann ich meinem Linker klar machen das er nicht libcmt linken soll sondern die oben genannte?
-
I.d.R. steht sowas in der Doku des jeweiligen Produktes
http://wcrt.sourceforge.net/doc/usage.htmlDas bezieht sich aber auf VC7.1 (VS2003). Für andere Version muss Du dort nachfragen... oder es eben selber probieren...