Laden...

DLL einbinden, wo Verzeichnis vorgeben ?

Erstellt von peter vor 20 Jahren Letzter Beitrag vor 20 Jahren 5.298 Views
P
peter Themenstarter:in
5 Beiträge seit 2003
vor 20 Jahren
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

C
980 Beiträge seit 2003
vor 20 Jahren

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

P
peter Themenstarter:in
5 Beiträge seit 2003
vor 20 Jahren

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

T
41 Beiträge seit 2003
vor 20 Jahren

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!

P
939 Beiträge seit 2003
vor 20 Jahren

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

Gelöschter Account
vor 20 Jahren

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

Gelöschter Account
vor 20 Jahren

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

V
842 Beiträge seit 2003
vor 20 Jahren

Ich glaube das war folgender:

using System.Runtime.InteropServices;

Code-Hacker