C++ dll einbinden
-
Hallo,
kennt jemand ein gutes Tutorial wie man eine C++ dll in Csharp einbindet ?
Ist es zwinged dass ich mananged C++ verwende ?
-
Erstelle ich in Visual STudio ein C++ Projekt wird das auch in Zwischencode übersetzt ? Ich glaube fast C++ hat einen anderen Compiler als C# und VB
-
Und wenn Du C++/CLI in Erwägung ziehst?
-
C++/Cli ist ja einfach die neueste Version von managed C++.
Eigentlich möchte ich ja reines C++ verwenden. Geht das ?
-
Du kannst die DLL mittels P/Invoke einbinden. Dann benötigst du eine Wrapper-Klasse, in welcher du über DllImport die Dll und deren Funktionen lädst.
-
ohne Wrapper Klasse geht also nix ?
-
Nein. Du wirst nicht umhin kommen, in C# irgendeine Art von Klasse zu nutzen, da es freie Funktionen in C# nicht gibt.
-
Naja du brauchst keine Wrapperklasse, du kannst den DLLImport ja auch in der Klasse machen die die Funktion verwendet
Und hier das Tutorial: http://msdn.microsoft.com/en-us/library/aa288468(v=vs.71).aspx
-
Unbehandelte Ausnahme: System.EntryPointNotFoundException: Der Einstiegspunkt add wurde nicht in der dll gefunden .
Die Funktion schaut in der c++ datei so aus:
int add(int a,int b) { return a+b; }
-
Zeig uns doch auch bitte deinen C# Code.
Edit: Ist die Funktion als extern deklariert? Sonst ist die Funktion nicht nutzbar.
-
Außerdem gilt für C++: Name Mangling
Deswegen möglichst eine C-Schnittstelle benutzen (d.h. von C++ aus mit extern "C" deklarieren).