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...
-
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).aspxDas 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 unddas Problem war geklärt
Vielen Dank nochaml für die superschnellen Antworten !!!
Fall ist gelöst,
Gruß Ulli