Aktion ausführen vor dem laden von Dll's



  • Hallo an alle,

    ich habe ein etwas spezielles Problem mit dem Laden von Dll's.
    Von Anfang an:
    Seither wurde unsere Applikation mit VC6.0 erstellt. Nun haben wir
    den Umstieg auf Visual Studio 2010 vollzogen. Funktioniert auch soweit
    alles prächtig. Allerdings gibt's noch einen Haken. Auf den Zielsystemen sind
    die beiden Dll's mfc100u.dll und msvcr100.dll nicht vorhanden.

    Wenn die beiden Dll's einfach zur exe dazu gelegt werden funktionierts
    soweit auch ( z.B. starten durch doppelklicken). Aber der Haken an der
    ganzen Geschichte ist, dass die App von einem anderen Programm aufgerufen wird
    welches das Arbeitsverzeichnis nicht korrekt einstellt :p .
    Dadurch werden die Dll's wieder nicht gefunden.

    Nun zu meiner eigentlichen Frage: Gibt es für diesen Fall die Möglichkeit,
    dass die erstellte Applikation vor dem laden der Dll's noch eine Aktion ausführt 😕 ?
    Ich denke da z.B. an das kopieren der Dll's ins
    System32 Verzeichnis. Achja, Betriebssystem ist WindowsXp.

    Besten Dank schonmal an alle die sich das soweit durchgelesen haben 🙂
    Gruß Uli





  • Danke fuer den Tip,
    dummerweise können wir die Zielrechner nicht einfach updaten,
    bzw. nur mit sehr sehr großem Aufwand.
    Gruß Uli



  • Du solltest einfach statisch linken, dann sollte es gehen.
    http://blog.kalmbach-software.de/de/2008/03/05/wie-man-statisch-gegen-die-c-runtime-crt-linkt/

    Ich kann mir aber auch nicht vorstellen, dass er die DLLs nicht findet, wenn sie im gleichen Verzeichnis liegen... das hat mit dem WorkingDirectoiry nichts zu tun...


  • Mod

    Wenn DLLs im gleichen Verzeichnis wie die Anwendung liegen werden sie gefunden!
    Dieses Verzeichnis ist sogar das allererste das durchsucht wird. Siehe Doku!
    http://msdn.microsoft.com/en-us/library/windows/desktop/ms682586(v=vs.85).aspx

    Das CurrentWorking Directory sollte ja genau nicht nach DLLs durchsucht werden (binary planting) siehe SetDllSearchMode!



  • Hallo nochmal,

    eure Tipps haben uns auf die richtige Fährte gebracht 👍 👍 👍
    Es ist tatsächlich so, dass die Dll's gefunden werden. Das ganze war ein
    typisches "selbst ins Knie geschossen" Problem 🤡 .

    In der eigentlichen App ist eine zweite, winzig kleine Applikation
    beinhaltet. Diese wird beim Start ins Windows Tmp Verzeichnis
    kopiert und dort gestartet. Dann popt die Fehlermeldung auf,
    dass dieses Programm die Dll's nicht findet (ok ist ja auch logisch).
    Dummerweise hatte ich die Windows- Meldung nicht richtig gelesen,
    dort stand eigentlich drin, dass das andere Progrämmchen das Problem hat.
    Durch eure Hinweise haben wir das ganze nochmals genauer
    untersucht und 💡 das Problem war geklärt 👍

    Vielen Dank nochaml für die superschnellen Antworten !!!
    Fall ist gelöst,
    Gruß Ulli


Anmelden zum Antworten