Statisches Linken der CRT
-
Moin, ich würde gerne meine Anwendung nicht nur auf meinem Rechner sondern auch auf anderen zum Laufen bringen.
Das mit dem statischen Linken hat früher immer geklappt, wenn ich jedoch heute von Multithreaded-DLL auf Multithreaded umstelle, bleibt die .exe 11 KB groß und ich kann sie auf meinem anderen PC nicht ausführen (bekannter Fehler).Jemand eine Ahnung wie ich das Problem lösen kann?
-
Ich benutze MS VC++ 2010
-
Wenn du keinen expliziten Grund hast die CRT statisch zu linken dann link sie dynamisch und installier am Zielrechner die entsprechende VC++ Redistributable...
-
Rebuild All?
-
Schon versucht. Ich habe mehrere Projekte in einer Projektmappe und alle neu erstellt bzw. die Mappe bereinigt etc.
-
dot schrieb:
Wenn du keinen expliziten Grund hast die CRT statisch zu linken dann link sie dynamisch und installier am Zielrechner die entsprechende VC++ Redistributable...
Mein Testrechner war nur zu Testzwecken aber es soll nen Internetdownload sein.
-
brt000 schrieb:
Mein Testrechner war nur zu Testzwecken aber es soll nen Internetdownload sein.
Das ist kein Grund. Dann muss der Installer oder der Benutzer eben die Redist installieren wenn sie nicht vorhanden ist.
-
Und auch statisch die CRT linken funktioniert!
-
Entwder die offizielle Redist anbieten oder gleich im eigenen Installer die DLLs mit rein nehmen. Ich verstehe echt das Problem nicht.

-
Wieso kann man nicht einfach eine Standalone bereitstellen, ohne dass der Endbenutzer irgendwelches Restzeug installieren muss? Ihr drückt es alle so aus, als wäre statisches Linken nur dann erlaubt, wenn man nen Pakt mit dem Teufel eingeht. Wieso sollte ich Beispielsweise für ein Hilfsprogramm dass 30 KB groß is ne 2MB DLL mitliefern?
-
brt000 schrieb:
Wieso kann man nicht einfach eine Standalone bereitstellen, ohne dass der Endbenutzer irgendwelches Restzeug installieren muss?
Darfst du ja. Mach es einfach.
-
brt000 schrieb:
Wieso sollte ich Beispielsweise für ein Hilfsprogramm dass 30 KB groß is ne 2MB DLL mitliefern?
Gegenfrage: Wieso sollte jedes Programm das mit VC2010 gebuildet wurde die selben Codeteile immer wieder in meinen RAM laden wenn alle einfach eine globale dll verwenden könnten. Abgesehen davon hast du mit der dll den Vorteil dass Bugfixes, Security Updates etc. greifen. Es hat seine Gründe warum die Runtime per default dynamisch gelinked wird, genaueres dazu findest du in der MSDN. Das wesentliche Zitat:
MSDN schrieb:
It is not recommended to redistribute C/C++ applications that statically link to Visual C++ libraries.
-
Das mit der Sicherheit ist ein anderes Thema, dass stimmt. Aber in der heutigen Zeit von zuwenig Ram sprechen. Weis nicht ... Es geht ja nicht um 100te von MB.
-
imo gehts hier ums Prinzip, auch wenns nur 1MB groß is. Eine ordentliche Software macht sowas einfach nicht bzw. macht sowas nur wenn es ein schlagkräftiges Argument dafür gibt aber ein solches wurde hier noch nicht genannt...
-
Ok, wollte noch dazu sagen das es von Software zu Software verschieden ist. Wenn am Zielsystem keine Redist installiert werden kann, dann hat man keine Wahl.
Aber das läuft auf dein Post hinaus...
-
@dot:
Öhm.
Dass es z.B. nervt wenn man Programme installieren muss, oder erstmal ne Runtime installieren muss damit sie laufen?
-
lowbyte_ schrieb:
Ok, wollte noch dazu sagen das es von Software zu Software verschieden ist. Wenn am Zielsystem keine Redist installiert werden kann, dann hat man keine Wahl.
Natürlich, das wäre dann ein Argument über das man reden kann.
hustbaer schrieb:
Öhm.
Dass es z.B. nervt wenn man Programme installieren muss, oder erstmal ne Runtime installieren muss damit sie laufen?Anständiges Setup machen? Abgesehen davon ist die Wahrscheinlichkeit dass die Runtime bereits vorhanden ist relativ hoch (je weniger so denken desto besser)...
-
hustbaer schrieb:
@dot:
Öhm.
Dass es z.B. nervt wenn man Programme installieren muss, oder erstmal ne Runtime installieren muss damit sie laufen?
-
Und warum linkst Du nicht statisch??? Was hindert dich daran????
http://blog.kalmbach-software.de/de/2008/03/05/wie-man-statisch-gegen-die-c-runtime-crt-linkt/
-
