Probleme mit verschiedenen DLL-Versionen und Working-Directory

04/12/2007 - 12:50 von Nils Schneider | Report spam
Hallo Leute,

habe gerade ein kleines Problem mit DLLs. Ich habe ein Plugin für ein
Program geschrieben, bin also eine DLL. Nun gibt es dort auch noch ein
anderes Plugin eines anderen Herstellers. Das Problem ist, das mein
Plugin die selbe DLL benötigt wie das Fremd-Plugin. Aber natürlich
stimmt die Version nicht immer überein. Am besten ein Beispiel:

Nehmen wir an hier ist die Basisapplikation installiert:

C:\programme\host\

Das Fremdplugin liegt hier:

C:\programme\host\plugins

Mein Plugin liegt hier und ist beim Host angemeldet, wird also geladen:

C:\dev\meinplugin

Das Problem dabei ist, das beim Laden meiner DLL das Arbeitsverzeichnis
nicht in c:\dev\meinplugin zeigt, wo die richtige DLL-Version liegt die
ich brauche, sondern nach C:\Programme\host. Dort hat das Fremdplugin
auch seine Version der DLL ablelegt.

Mein Plugin ist statisch gegen diese DLL gelinkt, er will diese DLL also
noch bevor ich in der DllMain ankomme laden, natürlich aus dem
falschen Pfad. Gibt es hier irgend eine Möglichkeit der Abhilfe?

Gruß & Dank,

Nils
 

Lesen sie die antworten

#1 Markus Schaaf
06/12/2007 - 23:45 | Warnen spam
Nils Schneider schrieb:

habe gerade ein kleines Problem mit DLLs. Ich habe ein Plugin für ein
Program geschrieben, bin also eine DLL. Nun gibt es dort auch noch ein
anderes Plugin eines anderen Herstellers. Das Problem ist, das mein
Plugin die selbe DLL benötigt wie das Fremd-Plugin. Aber natürlich
stimmt die Version nicht immer überein.



Theoretisch ist es so: Eine der beiden Versionen dieser DLL ist
neuer als die andere, aber vollstàndig abwàrtskompatibel (sonst
hàtte sie einen anderen Namen als die alte Version). Also
brauchst Du nur dafür zu sorgen, dass die neuere Version
installiert wird, welche dann beide Plug-Ins benutzen.

Falls das mit der Kompatibilitàt nicht stimmt, machst Du einen
Bug-Report beim Hersteller und làsst Dir eine neue schicken, mit
anderem Namen.

Ein schneller Hack ist, eine der beiden DLLs umzubennen und diese
+ das zugehörige Plug-In zu patchen.

Ähnliche fragen