Entwickler-Ecke
Basistechnologien - C++ Klasse in C# Project verwenden?
haschme - Do 01.09.16 09:15
Titel: C++ Klasse in C# Project verwenden?
Hallo zusammen,
ich habe mir vor kurzem eine C++ Klasse mit 3 zugehörigen Header-Dateien heruntergeladen.
Ich würde gerne auf die Methoden dieser Klasse in einem existierenden C#-Project zugreifen.
Leider war bei meinem Download keine .dll dabei.
Ist es so überhaupt möglich die C++ Klassen in meinem C#-Project zu verwenden?
Wenn ja, wie macht man das?
Vielen Dank!
Moderiert von
Christian S.: Topic aus WinForms verschoben am Do 01.09.2016 um 09:21
C# - Do 01.09.16 09:39
Meines Wissens nach kannst du C++ Code nicht direkt verwenden, sondern nur als dll. Aber was hindert dich daran einfach die Dateien in zu einer dll zu kompilieren?
haschme - Do 01.09.16 09:53
C# hat folgendes geschrieben : |
Meines Wissens nach kannst du C++ Code nicht direkt verwenden, sondern nur als dll. Aber was hindert dich daran einfach die Dateien in zu einer dll zu kompilieren? |
Wahrscheinlich hindert mich daran nur meine Unwissenheit im Bezug auf C++.
Gibt es einen Compiler den du mir da empfehlen kannst?
Habe es in Visual Studio versucht aber bekomme immer diese Meldung:
Fehler C1853 Die vorkompilierte Header-Datei "Debug\Lib2.pch" stammt von einer früheren Version des Compilers, oder der vorkompilierte Header stammt von C++, und Sie verwenden Ihn von C (oder umgekehrt) Lib2 c:\entwicklung\test\phonet.c
Hier habe ich übrigends die Dateien heruntergeladen:
ftp://ftp.heise.de/pub/ct/listings/9925-252.zip
Das ganze stammt von einem Heise-Artikel den ich interesannt fand:
http://www.heise.de/ct/ftp/99/25/252/
Th69 - Do 01.09.16 14:12
Hallo,
das ist aber ein reines C-Projekt (kein C++).
Dann erzeuge mal im Visual Studio ein neues DLL-Projekt und deaktiviere dabei "vorkompilierte Header".
Für die Weiterverwendung in einem anderen C oder C++-Projekt ist dieser Source-Code zwar nicht geeignet (denn der Ersteller hat statische Daten im Header "phonet.h" definiert :gruebel:), aber für die Verwendung von C# aus mittels P/Invoke sollte das keine Rolle spielen (da du dann eh die "function prototypes" aus "ph_ext.h" als C#-Aufrufe nachbilden mußt, welche nur Standard-Datentypen verwenden).
Beachte dabei aber den Kommentar:
ph_ext.h hat folgendes geschrieben: |
/**** If you want to use "phonet.c" as a library, ****/
/**** delete the following macro (Note: This will ****/
/**** also disable the function "check_rules"). ****/
#define PHONET_EXECUTABLE
|
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!