ANSI C: DLL erstellen

Gast #4870100
Lesenswert?

Hallo, für eine spezielle Anwendung soll eine DLL erzeugt und in C# 
benutzt werden. Sobald ein gültiges UDP Telegramm empfangen wird, soll 
in der DLL Funktion RceiveFunction die Länge übergeben werden. In C# 
soll dann die DLL Funktion benutzt werden. Was müsste ich tun, damit die 
Länge übergeben und in C# ausgelesen werden kann?

ANSI C:
1
extern "C" __declspec(dllexport) int __cdecl ReceiveFrame(void)
2
{
3
  return 0;
4
}
5

6
void Callback(void* _pInst)
7
{
8
  Len = UDPReceive(UDPBuffer, 256, 0);
9
  if (Len)
10
  {
11
  }
12
}

C#:
1
        [DllImport("test.dll" CallingConvention = CallingConvention.Cdecl)]
2
        public static extern int ReceiveFrame();
Gast #4870219
Lesenswert?

Deine Beschreibung ist ein bischen verquer.
Wie ich das verstehe:
- UDP Telegramm empfangen (C-DLL).
- Eine Funktion wird daraufhin aufgerufen (Callback innerhalb der 
C-DLL).
- Callback C -> C# mit Übergabe von Parametern (Länge).

Callbacks von C nach C# sind möglich (delegate)
https://www.codeproject.com/Tips/318140/How-to-make-a-callback-to-Csharp-from-C-Cplusplus

Und generell mal nach
c# c dll callback delegate
suchen, es gibt da auch bei stackoverflow einiges zu diesem Thema.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren