Re: Funktion aus standard DLL aufrufen
From: Thomas Scheidegger [MVP] (spam.netmaster_at_swissonline.ch)
Date: 03/05/04
- Next message: Joachim Fuchs: "Re: PointToScreen unterschiedliche Werte"
- Previous message: Boris Cromm: "Re: Picturebox.size.width kann nicht zugewiesen werden"
- In reply to: Jörg Büscher: "Re: Funktion aus standard DLL aufrufen"
- Next in thread: Jörg Büscher: "Re: Funktion aus standard DLL aufrufen"
- Reply: Jörg Büscher: "Re: Funktion aus standard DLL aufrufen"
- Messages sorted by: [ date ] [ thread ]
Date: Fri, 5 Mar 2004 11:57:44 +0100
Hallo Jörg
> short __declspec(dllexport) __stdcall WINAPI pmc_rdpmcrng (
aha, da ist jemand am Fanuc/SPS programmieren ;-)
(machte ich einige Jahre zuvor in C++ auch mal)
> Ich hab das ganze bisher nur in VB6 benutzt, da liefs ohne Probleme!
irrelevant, .NET PInvoke hat eigene Regeln.
(IMHO: VB6-Code hier einfach vergessen)
In der Struktur muss man vermutlich wirklich ein Byte-Array mitgeben,
(C++ unions sind schlecht nach .NET übertragbar)
oder mehrere Varianten von IODBPMC definieren.
(je nach Datentyp der SPS-Variablen, und je nach Anzahl).
Versuche mal mit richtigen Marshaling-Attributen:
<StructLayout(LayoutKind.Sequential, Pack:=1)> _
Private Structure IODBPMC
Public nType_a As Short
Public nType_d As Short
Public nDatano_s As Short
Public nDatano_e As Short
<MarshalAs(UnmanagedType.ByValArray, SizeConst:=32)> _
Public sCdata() As Byte
End Structure
und ändere Code:
'Len' ist ungeeignet für PInvoke, nimm 'Marshal.SizeOf' :
............
tBuf.sCdata = New Byte(32) {}
Dim siz As Int32 = Marshal.SizeOf(tBuf)
lret = pmc_rdpmcrng(1234, 5, 0, 2010, 2010, siz, tBuf)
wobei ich doch annehme, dass '1234' nicht als gültiges Handle
durchgeht, muss sicherlich zuerst gelöst (open?) werden...
Falsches Handle kann Exception/Absturz bewirken!
-- Thomas Scheidegger - MVP .NET - 'NETMaster' http://www.cetus-links.org/oo_dotnet.html - http://dnetmaster.net/
- Next message: Joachim Fuchs: "Re: PointToScreen unterschiedliche Werte"
- Previous message: Boris Cromm: "Re: Picturebox.size.width kann nicht zugewiesen werden"
- In reply to: Jörg Büscher: "Re: Funktion aus standard DLL aufrufen"
- Next in thread: Jörg Büscher: "Re: Funktion aus standard DLL aufrufen"
- Reply: Jörg Büscher: "Re: Funktion aus standard DLL aufrufen"
- Messages sorted by: [ date ] [ thread ]
Relevant Pages
|