DLL entladen

20/12/2007 - 10:42 von Heiko Wonneberger | Report spam
Hallo,

wir stellen hier ein C++ Projekt auf C# um. In dem Programm wird eine DLL
dynamisch geladen, aufgerufen und anschließend wieder freigegeben, weil's
nötig ist.

Wenn man jetzt im C# sowas stehen hat:

[DllImport("MyDLL")]
private static extern int DoSomething();

Wird die DLL erst in dem Moment geladen, wenn die Funktion aufgerufen hat?
Und was noch wichtiger ist: Kann man die DLL nach der Rückkehr aus der
Funktion auch exlpizit wieder freigeben, um beispielsweise die DLL, oder
DLLs, die von ihr wiederum geladen werden, austauschen zu können?

Gruß
Heiko
 

Lesen sie die antworten

#1 Kerem Gümrükcü
20/12/2007 - 11:21 | Warnen spam
Hallo Heiko,

Wenn man jetzt im C# sowas stehen hat:

[DllImport("MyDLL")]
private static extern int DoSomething();

Wird die DLL erst in dem Moment geladen, wenn die Funktion >aufgerufen hat?



Ja,...


Und was noch wichtiger ist: Kann man die DLL nach der Rückkehr aus der
Funktion auch exlpizit wieder freigeben, um beispielsweise die DLL, oder
DLLs, die von ihr wiederum geladen werden, austauschen zu können?



Ja,..sofern kein anderes Programm einen Handle darauf hàlt ist das kein
Problem,...

Du kennst das ja sicher schon: LoadLibrary und FreeLibrary. Aber überprüfe
die Rückgabewerte der DLLs!


[DllImport("kernel32.dll", SetLastError=true)]
static extern bool FreeLibrary(IntPtr hModule);

[DllImport("kernel32.dll")]
static extern IntPtr LoadLibrary(string lpFileName);


Grüße

Kerem

Beste Grüsse / Best regards / Votre bien devoue
Kerem Gümrükcü
Microsoft Live Space: http://kerem-g.spaces.live.com/
Latest Open-Source Projects: http://entwicklung.junetz.de
"This reply is provided as is, without warranty express or implied."

Ähnliche fragen