2016-07-26 23 views
0

Ich möchte meine C++ - Klasse in C# Windows Forms-Anwendung verwenden.C++ - Klasse in C++ DLL in C# Windows Forms Klasse

Ich machte eine C++ - Klasse in den Header-Dateien (.h und .cpp), dann machte ich ein Win32-Projekt, wo es eine DLL werden sollte.

Dann möchte ich es in meinem C# Windows Forms Projekt verwenden, aber ich weiß nicht, wo ich es oder was zu setzen.

This is the StackLibrary.h and .cpp

This is what i have in the c# windows forms project, i added the interopservices and the dllimport. i dont know what to do next or if its correct. pls help.

+0

[STAThread] zu M gehört ain Methode, Sie können es nicht trennen. Schreibe DllImport über STAThread. –

+0

Wie benutze ich die Funktionen nach dem Schreiben der DllImport über dem STAThread? –

+0

Unter DllImport müssen Sie den Funktionsnamen schreiben, siehe Beispiel: https://msdn.microsoft.com/en-us/library/aa288468(v=vs.71).aspx –

Antwort

0

Sie haben einen Wrapper in C++/CLI schreiben (rif https://msdn.microsoft.com/en-us/library/ms235281.aspx.): den Wrapper in C++ schreiben, als DLL kompilieren C++/CLI anschließend wurden zu C# Projekt werden Sie keine Fehler haben:

StackLibrary DLL (native C++) < -> Wrapper-DLL (C++/cli) < -> C# Projekt

+0

sollte ich die stacklibrary dll mit einem Wrapper ersetzen? –

+0

Sie können sie getrennt halten: Auf diese Weise können Sie Ihre StackLibrary-DLL sowohl in C# (über Wrapper) als auch mit anderen Sprachen (z. B. C++, VB, PHP, ... und allen Sprachen, die DLL importieren können) verwenden. Sie können das StackLibrary-Projekt transformieren, indem Sie den Wrapper hinzufügen und mit der C++/CLI-Option kompilieren. In diesem Fall (stacklibrary dll replacement) können Sie diese DLL nur zum .Net/Mono-Projekt hinzufügen. – Fil

+0

Danke für die Hilfe Herr, ich werde versuchen, daran zu arbeiten –