c headerdatei in C#
dato
- programmiertechnik
Guten Abend,
eine Frage ist es möglich eine c-headerdatei die selbst erstellt wurde in C# einzubinden?
Wenn ja was muss man beachten?
Grund für die Frage: WOllen ein Spiel erstellen wo die Grafische Oberfläche in C# gemacht wird und der Rest Ki usw .in c.
Ist das möglich??
Vielen dank für euere Antworten
Moin.
Man könnte den C-Code zu einer DLL kompilieren. Exportierte Funktionen können per Platform Invoke aufgerufen werden. Ob es noch einfachere Möglichkeiten gibt, kann euch vielleicht jemand beantworten, der etwas mehr Ahnung von .Net hat als ich.
Christoph
PS: Wenn ihr den Code sowieso neu entwickelt, wieso dann nicht gleich in C#?
PS: Wenn ihr den Code sowieso neu entwickelt, wieso dann nicht gleich in C#?
da einige der Meinung sind das nur in C zu machen zwecks Übung für SChule
Guten Abend,
eine Frage ist es möglich eine c-headerdatei die selbst erstellt wurde in C# einzubinden?
Wenn ja was muss man beachten?
es gibt verschiedene Handhabungen von headern. I.d.R. ist es so:
1. in der header-Datei (x.h) sind nur die Funktionen und Variablen deklariert, nicht jedoch die Quellcodes der Funktionen selbst,
2. die Library ist vorkompiliert und liegt als x.o vor (ObjectsFile).
3. die x.o wurde aus einer x.c erzeugt
Wichtig ists, mit den Präprozessor-Anweisungen zu prüfen, ob ein header bereits geladen ist oder nicht, Beispiel der x.h:
/**************************************************************************
Library fuer Kalenderberechnungen
Library for Calendar Calculations
Mit dieser Library kann jeder Tag von
1.1.4713 vor Christus
bis
heute Anno Domini
eindeutig bestimmt werden
Es gilt fuer Berechnungen mit dieser Library:
1.1.-4713 bis 4.10.1582 Julianischer Kalender
ab 15.10.1582 Gregorianischer Kalender
Dateinamen:
julianlibc.o <= Library
julianlibc.h <= Header, this File
Autor: Rolf Rost, 23.3.2008, ueberarbeitet 14.5.2008
Object-Datei wie folgt linken
gcc a.c -o a.exe julianlibc.o
**************************************************************************/
#ifndef __julianlibc_h__
#define __julianlibc_h__
/*********** Struktur für einen eindeutig bestimmten Tag *****************/
struct tagx {
int julianday; /* Julianischer Tag */
int day; /* Tag zum Datum */
int month; /* Monat zum Datum */
int year; /* Jahr zum Datum */
};
/************** Funktionen ***********************************************/
void tagx_julianday(struct tagx *, int jd);
void tagx_dmy(struct tagx *, int day, int month, int year);
int julianday(int day, int month, int year);
// weitere Funktionen...
#endif
Dateien:
julianlib.c // Quellcode der Lib mit Funktions-Definitionen
julianlib.h // Header mit Funktions-Deklarationen
julianlib.o // Vorkompilierter Quellcode der Lib
Und ja, was nirgendwo steht: Manche Compiler streiken, wenn in der Lib-Datei im Dateinamen ein Bindestrich ist.
Viele Grüße,
Hotte
Oh, Mist,
jetzt hab ich # un ++ verwechselt, bitte ignorieren,
Hotte