Hallo!
besitze folgenden Visual Basic Code, um eine dll einzubinden:
Option Explicit
Private Declare Function OpenDevice Lib "k8055d.dll" (ByVal CardAddress As Long) As Long
Private Declare Sub CloseDevice Lib "k8055d.dll" ()
Priave Declare Function ReadAnalogChannel Lib "k8055d.dll" (ByVal Channel As Long) As Long
usw.
Möchte nun das ganze in meinem c# projekt verwirklichen, ist das möglich?
Hätte so begonnen:
In der AssemblyInfo.cs nach:
[assembly: AssemblyTitle("")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("")]
[assembly: AssemblyCopyright("")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
[DllImport("kb8055d.dll")]
private static extern long OpenDevice(long CardAddress);
usw.. geht das? bekomme folgende Fehlermeldung:
Es wird Klasse, Delegat, Enumeration, Schnittstelle oder Struktur erwartet
könnte ich die Methoden dann einfach in meiner form1.cs verwenden?
Bitte um Hilfe! Danke!
LG, Klaus
Hast Du den DllImport in der Datei AssemblyInfo.cs gemacht ? Wenn ja dann ist das der Fehler. (verschieben in eine normale Klasse)
Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...
danke für den Tipp! Bin neu auf dem Gebiet!
hab jetzt folgendes ergänzt:
[DllImport("K8055D.dll")]
private static extern long OpenDevice(long CardAddress);
private static extern void CloseDevice();
da in er Visual Basic Anweisung folgende Zeile steht:
Private Declare Sub CloseDevice Lib "k8055d.dll" ()
Fehlermeldung:
Eine nicht behandelte Ausnahme des Typs 'System.TypeLoadException' ist in Unbekanntes Modul. aufgetreten.
Zusätzliche Informationen: Typ 'k8055_self_dll.Form1' der Assembly 'k8055_self_dll, Version=1.0.2045.34964, Culture=neutral, PublicKeyToken=null' konnte nicht geladen werden, da die Methode 'CloseDevice' keine RVA hat.
Merkwürdig ist auch, dass die Methode OpenDevice, bei Übergabe der HardwareAdresse, die Adresse der Messkarte zurückliefert. leider macht sie das auch bei nicht angesteckter Karte.. ist das ein Grund zur beunruhigung?
DllImport muss immer auf allen Methoden stehen welche importiert werden sollen.
Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...
Original von klaus1
Merkwürdig ist auch, dass die Methode OpenDevice, bei Übergabe der HardwareAdresse, die Adresse der Messkarte zurückliefert. leider macht sie das auch bei nicht angesteckter Karte.. ist das ein Grund zur beunruhigung?
long in VB 6 = int in C# (Int32)
Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...
hallo!
Ich hoffe das ihr mir helfen könnt! Mein Problem ist, dass ich jetzt ebenfalls so ein Board habe und ein Programm in C# dazu schreiben möchte. Habe so etwas noch nie gemacht.
Habe nun folgendes unter die Main-Routine geschrieben:
[DllImport("\\...\\K8055D.dll",EntryPoint="OpenDevice",
CharSet=CharSet.Auto)]
public static extern long OpenDevice(long CardAddress);
public static extern long CloseDevice();
Wenn ich nun versuche das Programm auszuführen bekomme ich eine Meldung vom JIT:" An exception 'System.TypeLoadException' has occurend in Test.exe".
Was kann ich jetzt machen.
Bitte nun um Hilfe.
Original von Yeats
hallo!Ich hoffe das ihr mir helfen könnt! Mein Problem ist, dass ich jetzt ebenfalls so ein Board habe und ein Programm in C# dazu schreiben möchte. Habe so etwas noch nie gemacht.
Habe nun folgendes unter die Main-Routine geschrieben:[DllImport("\\...\\K8055D.dll",EntryPoint="OpenDevice", CharSet=CharSet.Auto)] public static extern long OpenDevice(long CardAddress); public static extern long CloseDevice();
Wenn ich nun versuche das Programm auszuführen bekomme ich eine Meldung vom JIT:" An exception 'System.TypeLoadException' has occurend in Test.exe".
Was kann ich jetzt machen.
Bitte nun um Hilfe.
wieso long ?.... mach mal int
Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...
Danke, bin dann selber daraufgekommen.
Wünsche noch fehlerfreies Programmieren
Sollte es sich auch zufällig um das Vellemann Interface Board handeln (K8055), dann kann ich dir meine Homepage unter HARDWARE empfehlen:
http://www.k8055-velleman.at.tt
habe hier den selbst geschriebenen Treiber stehen!
Lg, Klaus