fremde DLL in C# importieren

Gast #1221254
Lesenswert?
• ▲
▼
Hallo,

ich versuche eine Funktion aus einer fremdem DLL in mein c# Projekt zu 
importieren.
Dabei tauchen in der Funktionsübergabe aber Strukturen und ein LPBYTE 
auf. Dies ist in der Header-Datei definiert (bis auf LPBYTE). Die Header 
Datei kann ich in C# nicht einbinden. Wie gehe ich da weiter vor?

//So ist die Funktion in der Lib angegeben
STBLLIB_API BYTE STBL_GET(LPBYTE Version, LPCommands pCmds);

//So möchte ich sie importieren
[DllImport("STBLLIB.dll")]
public static extern byte STBL_GET(byte[] Version, LPCommands pCmds);

wie komme ich an LPBYTE und LPCommands?

Gruß
Maik

P.S. IDE: Visual C# 2005 Express Edition
Gast #1221559
Lesenswert?
• ▲
▼
Ich müsst jetzt erstmal auf der Festplatte rumwühlen, bei einem Versuch, 
die FTDI-DLLs in C# einzubinden, hatte ich das gleiche Problem, was sich 
mit der IntPtr-Struktur aus C# einwandfrei lösen lies.
In deinem Fall dürfte das auch funktionieren, anstatt LPBYTE gibst du 
als Typ einfach IntPtr an. Die genaue Verwendung musst du in der 
Dokumentation zum .NET FrameWork nachlesen.

Ralf
#1222050
Lesenswert?
• ▲
▼
Maik wrote:
> wie komme ich an LPBYTE und LPCommands?

LPBYTE wurde schon erklärt, LPCommands muss irgendwo in den Headern der 
DLL definiert sein -> die Struktur zu LPCommands finden und in C# 
passend nachbilden...
1
[StructLayout(LayoutKind.Sequential)]
2
public struct Commands {
3
    ...
4
}
5
// oder 
6
[StructLayout(LayoutKind.Explicit)]
7
public struct Commands {
8
    [FieldOffset(123456789)]
9
    ...
10
}
11

12
// Aufruf 
13
Commands cmd;
14
byte[] version = ...;
15
STBL_GET(version, ref Commands cmd);

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.