Autor Beitrag
haschme
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 57
Erhaltene Danke: 1



BeitragVerfasst: Do 01.09.16 09:15 
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 user profile iconChristian S.: Topic aus WinForms verschoben am Do 01.09.2016 um 09:21
C#
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 561
Erhaltene Danke: 65

Windows 10, Kubuntu, Android
Visual Studio 2017, C#, C++/CLI, C++/CX, C++, F#, R, Python
BeitragVerfasst: 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?

_________________
Der längste Typ-Name im .NET-Framework ist: ListViewVirtualItemsSelectionRangeChangedEventHandler

Für diesen Beitrag haben gedankt: haschme
haschme Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 57
Erhaltene Danke: 1



BeitragVerfasst: Do 01.09.16 09:53 
user profile iconC# hat folgendes geschrieben Zum zitierten Posting springen:
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.heise.de/pub/ct/listings/9925-252.zip

Das ganze stammt von einem Heise-Artikel den ich interesannt fand: www.heise.de/ct/ftp/99/25/252/
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4764
Erhaltene Danke: 1052

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: 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

Für diesen Beitrag haben gedankt: haschme