ich habe eine DLL welche in c++/c erstellt ist. In dieser sind Funktionen und eine Klasse definiert. Die Funktionen kann ich ohne Probleme in meinem c# Programm nutzen. Das Funktioniert auch alles prima. Zum Hintergrund: In der DLL befindet sich alles was ich benötige um bestimmte Geräte per USB Kabel zu programmieren. Leider kann ich mit der DLL immer nur ein Gerät programmieren. Mit der Klasse wäre es möglich mehrere Geräte parallel zu flashen. Leider bekomme ich es nicht hin. Wenn ich mein Programm mehrfach starte laufen die Programmiervorgänge ohne Probleme da die DLL in jedem Thread eigens geladen wird. Habe nur die Header Datei (aus ihr hab ich den c# code abgeleitet) und die DLL.
Nun hatte ich folgende Ideen, leider funktioniert keine oder mir fehlt einfach das nötige Know-How:
- Versucht die Klasse zu nutzen in c#
- Versucht die dll in Threads mehrfach zu laden
- Die Klasse in einem c++ Programm zu nutzen um evtl. eine zwischen DLL zu nutzen die mir hilft. (Leider klappt da das nutzen der DLL schon nicht da ich keine lib Datei habe und das generieren auch nicht funktionierte da ich die ordinal von der Klasse nicht raus bekam)
Falls mir jemand helfen möchte oder eine Idee für mich hat dann freue ich mich sehr.
Viele Grüße,
Björn
.h (Auszug)
//funktioniert
short __declspec(dllimport) CALLBACK nbl_ReadPID(uint8 *Name = NULL, uint8 MaxLen = 0);
//funktioniert nicht oder ich weiß nicht wie
typedef class __declspec(dllimport) Usb2Lin
{
public:
Usb2Lin();
~Usb2Lin();
short CALLBACK nbl_ReadPID(uint8 *Name = NULL, uint8 MaxLen = 0);
} tUsb2Lin;
Also habe ich für die Funktion folgendes genutzt:
c#
//so lade ich die dll
[DllImport("Usb2LinDll.dll")]
public static extern short nbl_ReadPID(StringBuilder Name, byte MaxLen = 0);