Laden...

DLL einbinden, wo Verzeichnis vorgeben ?

Letzter Beitrag vor 21 Jahren 8 Posts 5.376 Views
DLL einbinden, wo Verzeichnis vorgeben ?

Hallo,

ich habe ein kleine Programm geschrieben, wo auf eine DLL zugegriffen wird.
Leider bekomme ich immer eine Fehlermeldung, wenn sich die DLL nicht im windows\system befindet.
Wenn ich sie in das Verzeichnis packe wo meine Prokjekt liegt, findet er sie nicht.

Jemand einen Tipp ?

Gruss

Peter

Ich nehme an du sprichst von klassischen DLLs per DllInclude
(nicht von .NET DLLs per Linking/Reflection)?

ja,

hier das Beispiel

public class ParPort
{
[DllImport("inpout32.dll", EntryPoint="Inp32")]
public static extern int Input(int adress);

[DllImport("inpout32.dll", EntryPoint="Out32")]  
public static extern void Output(int adress, int val);  

}

Gruss

Peter

Original von cdr

Ich nehme an du sprichst von klassischen DLLs per DllInclude
(nicht von .NET DLLs per Linking/Reflection)?

Das nennt man auch P/Invoke

Guck dir mal das Windows\System-Verzeichnis an - das ist so gut wie leer. Das Verzeichnis Windows\System32 sieht schon um einiges besser aus.

Korn, Bier, Schnaps und Wein
und wir höhren unsere Leber schrein!

Also ich habe keine inpout32.dll in meinem System32-Verzeichnis. Wenn das eine eigene Dll ist, müsste es funktionieren, wenn du sie in das selbe Verzeichnis packst, in der auch deine Anwendung ist.

Gruß
Pulpapex

Hallo,

habe extra noch mal die Gegenprobe gemacht.

Es funktioniert wirklich nur, wenn ich die Datei im Windows Verzeichnis liegt. Sonst kommz immer folgender Fehlermeldung:

Eine nicht behandelte Ausnahme des Typs 'System.DllNotFoundException' ist in WindowsApplication3.exe aufgetreten.

Zusätzliche Informationen: Die DLL (inpout32.dll) kann nicht geladen werden.

GRuss

Peter

Benötigt man für DLLImport ein spezielles Namespace? weil bei mir erkennt .net den befehl nicht.

Ich glaube das war folgender:

using System.Runtime.InteropServices;

Code-Hacker