# C++ DLL in C# verwenden



## CopWorker (2. September 2019)

Hallo zusammen, 

sorry dass ich euch belästigen muss.
Aber leider komme ich nicht weiter.

Ich habe in mein C# Projekt eine in C++ erstellte DLL eingebunden.

Auf die Funktionen der DLL greife ich so zu wie es in zahlreichen Beschreibungen erklärt ist.

Erstmal die DLL (TraceLog.dll) über Verweise | Verweise hinzufügen  in mein C# Projekt einbinden.
Dann die Using Directive angeben

```
using System.Runtime.InteropServices;
```
Anschließend die DLL Imporierung vornehmen

```
[DllImport("TraceLog.dll", EntryPoint = "InitTraceLog", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true, CallingConvention = CallingConvention.Cdecl)]
        public static extern void InitTraceLog(????????);
```
Jetzt kommt der Haken.
Dort wo die vielen ? stehen soll der Übergabeparameter vom Typ "HINSTANCE" rein.
HINSTNACE ist aber C/C++ spezifisch und kann unter C# gar nicht verwendet werden.

Ich habe mal was über Marshal und MarshalAsAttribute gelesen.
Das führt mich aber nicht zu gewünschten Ergebnis.

Ist der Übergabeparameter "HINSTANCE" überhaupt möglich in C#.
Wenn ja, wie kann ich den dann noch beim Funktionsaufruf erzeugen?


```
InitTraceLog(???????????)
```

Wenn´s nicht geht kann ich die DLL wegschmeißen, oder.

MfG.
CopWorker


----------



## Spyke (9. September 2019)

HInstane ist ein Handle, sollte IntPtr zu passen.

Eventuell auch noch interessant für dich:
pinvoke.net: the interop wiki!


----------

