dato: c headerdatei in C#

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

  1. 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#?

    1. 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

  2. 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

    1. Oh, Mist,

      jetzt hab ich # un ++ verwechselt, bitte ignorieren,

      Hotte