crusher79
Goto Top

VB 6 Source + Unmanaged DLL unter Windows 10

Hallo,

habe für ein Lesegerät DLL + Beschreibung erhalten. Leider sind es VB 6 Beispiele. Wenn ich es mit C# nachbaue fliegt es mir um die Ohren. Auf die Datentypen habe ich eig. geachtet....

Reiße es nur grob mit dem init an.

ctn : Integer, 16 Bit , Unsigned pn : Integer, 16 Bit, Unsigned
nSuccess : Integer, 8 Bit, Signed

Public Declare Function CT_init Lib „Ctvml32“ Alias „CT_init“(ByVal ctn As Short, ByVal pn As Short) As Byte

nSuccess = CT_INIT (ctn, pn) Bsp: Interne Nummer = 1 und Comport = 1 CT_INIT(1,1)


Wenn das Gerät nciht verbundne ist, bekomm ich -10 als Value zurück. Sollte eig. -1 sein. Wenn bewusst den falschen USB Port angeben, ist der Return immer 0. Kommando ist erfolgreich, wenn Rückgabe = 0.


Ich bekomnme also nicht mal den init mit c# unter Windows hin.


Wenn ich Gerät später über Byte-Array initialisieren, kommt eine Speicherverletzung.....


Laut Support wäre alles ganz einfach, wenn man sich an das VB 6 ? Beispiel hält, bzw. es soweit umschreibt.


DLL habe ich mal wie folgt eingebunden
[DllImport(@"ctVML32.dll")]  
        private static extern sbyte CT_init(ushort ctn, ushort pn);


Frage: Wie geht man mit alten Code etc. am besten um? Habe insgesamt 6 Seiten. Die Codeschnippsel oben dienen nur zur Orientierung. Kann mir jemand helfen?

mfg Crusher

Content-ID: 511806

Url: https://administrator.de/forum/vb-6-source-unmanaged-dll-unter-windows-10-511806.html

Ausgedruckt am: 24.12.2024 um 19:12 Uhr

ralfol
ralfol 06.11.2019 um 09:35:22 Uhr
Goto Top
Hallo Crusher,
ich würde die DLL erst einmal untersuchen und nachsehen welche Datenformate
von den Funktionen usw. verlangt werden.
Z.b. mit dem API - Monitor von rohitab.

http://www.rohitab.com/apimonitor

Gruß ralfol
Crusher79
Crusher79 06.11.2019 um 09:51:47 Uhr
Goto Top
Hi,

kann ich. Beschreibung ist aber da.

Denke eher das man hier Marshallen muss. Bzw. mit Ptr arbeiten...

Habe Beispiel, wo beschrieben ist, wie man das auf verschiedene Art machen kann. Ggf. Speicherreservieren etc. Normaler DLLImport reicht scheinbar nicht.

mfg Crusher