Redistributable 2005 und Windows 7 x64



  • Hallo,

    ich habe gestern ein Problem festgestellt, das mir große Fragen aufwirft. Ich habe eine DLL Datei die Abhängigkeiten zu MSCRT80.dll also dem 2005er Redist Packet hat (alles x86). Nun habe ich zwei Windows 7 64 Bit Computer. Auf dem einem ist diese Redist drauf, auf dem anderen lässt sich das Microsoft Packet erst gar nicht installieren (und das Problem haben mehrere). Dementsprechend geht auf dem zweiten 64 bit Windows gar nichts und die Applikation sagt mit einer bekannten Fehlermeldung das sie nicht starten kann.
    Nun habe ich das Problem das ich die 2005 Abhängigkeit behalten muss (Kompatibilität).
    Wie geht ihr hier vor? Soll ich die benötigten Dateien selbst einzeln mit regsvr installieren?

    Im Internet gibt es All In One (AIO) redist Installer aber diese sind recht groß.

    Am liebsten würde ich eine DLL mit statischem Inhalt bauen, das scheint aber im VS2005 nicht möglich zu sein?

    Grüße
    TheNoName



  • 1. Warum lässt sich die redist nicht auf dem System installieren? Fehlermeldung?
    2. Warum kannst Du nicht statisch linken? Dann hast Du die Abhängigkeit weg...
    3. Das hat nix mit regsvr32 zu tun....
    4. Du kannst die CRT-Dateien auch AppLocal verteilen



  • 1. keine Fehlermeldung, das Setup startet und beendet sich ohne etwas anzuzeigen. Ich hab die 2.4MB große Webinstaller Version geladen, es kommt noch das Extrahieren aber kein Download. Sicher ist jedoch die *80.dll Dateien sind bei einem der Rechner per Dependency Walker nicht aufgelösst also nicht installiert oder erreichbar. Die Dateien selbst sind jedoch mehrfach auf dem Rechner. Ich habe ein wenig gegoogelt und herausgefunden das seit Vista das Problem existiert.

    3. siehe 1. erst wenn sie registriert sind sollten sie global verfügbar sein.

    2. Ich benutze die DLLs als Plugin und möchte statisch linken. Da ein großer Teil gedoch dynamisch linkt kann ich leider nicht explizit angeben was dazukommt (2005er redist) und was dynamisch bleiben muss (directx8+9+10 beisst sich gemeinsam).

    4. Du meinst in das Programmverzeichnis? Ja das hat funktioniert, da die DLL jedoch in vielen Programmen nachgeladen wird ist der Pfad leider immer anders, bzw. müsste ich die CRT öfters wohin kopieren.

    Also abschliessend könnte ich wohl zusammenfassen das ich eine statische selektive Verlinkung suche um beim Kompilieren nur die Runtime libraries statisch zu binden und den Rest dynamisch zu lassen.


  • Mod

    Bzgl. lokaler Installation.

    Wenn das Programm Deine DLL findet, dann findet er auch dazugehörige DLLs im Verzeichnis in dem die plugin-DLL liegt.

    Deine Argumentation passt nicht...



  • Dann nimm halt nicht den Web-Installer... und DU hast imme rnoch nicht verstanden was "regsvr32" macht...



  • Es geht weder um das lokale Ablegen der DLL Dateien noch um Regsvr32.
    Das sind doch alles unsinnige Frikellösungen.
    Die Frage lautete wie ich Teile statisch und gleichzeitig Teile dynamisch in die Binary einer DLL einbinden kann.


  • Mod

    Statisch Linken bezieht sich doch nur auf CRT und MFC. Wasist nun Dein Problem
    Gehe auf die Beschreibung von Jocen und gut.

    Was ist außerdem daran Gefrickel ein paar benötigte DLLs in ein Verzeichnis zu legen?



  • Statisch Linken bezieht sich doch nur auf CRT und MFC

    Ja wo denn?
    Ich kann nur umschalten zwischen:
    -Dynamische Bibliothek(.dll)
    -Statische Bibliothek (.lib)

    ne lib will ich nicht.

    Und dann ist noch MFC only als statisch oder dynamisch, aber ich hab keine MFC verwendet. Gilt das etwa für die CRT mit? Ist hier der Punkt um die Runtimes statisch mitzunehmen?



  • Ok, also wenn ich den Schalter MFC umlege dann wollen alle Funktionen plötzlich externe Libraries was mich wohl davon abgehalten hat.
    Auf folgender Seite kam jedoch Erlösung:
    http://social.msdn.microsoft.com/Forums/en-US/Vsexpressvc/thread/72c31600-9002-440f-950b-985949a84373
    kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib
    Dies scheint eine grundsätzliche Sammlung aller nötigen Abhängigkeiten zu sein.
    Das hat dann alles erschlagen und nun ist es statisch.

    Soweit Danke für die neuen Ansätze ...


Anmelden zum Antworten