Frage

ich habe pdcurses Quelle und konnte erfolgreich curses.h in meinem Projekt gehören, verknüpft die vorkompiliert Bibliothek und alle gut.

Nach wenigen Stunden zu versuchen, die Bibliothek, sah ich die tuidemo.c im Ordner Demos, es in eine ausführbare Datei und brillant zusammengestellt! genau das, was ich für mein Projekt benötigt.

Das Problem ist jetzt, dass es ein C-Code ist, und ich arbeite an einem C ++ Projekt in VS C ++ 2008.

Die Dateien, die ich brauche, sind tui.c und tui.h Wie kann ich schließen, dass die C-Datei in meinem C ++ Code? Ich sah paar Vorschläge hier

aber der Compiler war nicht allzu glücklich mit 100 von Warnungen und Fehlern.

Wie kann ich weitergehen darunter / verwenden, die TUI pdcurses beinhaltet!?

Danke

EDIT:

Ich habe extern „C“ Anweisung, so dass mein Test sieht wie folgt jetzt, aber ich bin immer eine andere Art von Fehler

#include <stdio.h>
#include <stdlib.h>
using namespace std;

extern "C" {
   #include <tui.h>
}

void sub0()
{
    //do nothing
}

void sub1()
{
    //do nothing
}


int main (int argc, char * const argv[]) {

    menu MainMenu[] =
    {
        { "Asub", sub0, "Go inside first submenu" },
        { "Bsub", sub1, "Go inside second submenu" },
        { "", (FUNC)0, "" }   /* always add this as the last item! */
    };
    startmenu(MainMenu, "TUI - 'textual user interface' demonstration program");

    return 0;
}

Auch wenn es erfolgreich kompiliert wird, ist es einen Fehler zur Laufzeit zu werfen, die einen schlechten Zeiger schlägt vor:

0xC0000005: Access violation reading location 0x021c52f9

in Zeile

startmenu(MainMenu, "TUI - 'textual user interface' demonstration program");

Nicht sicher, wo man von hier geht. nochmals vielen Dank.

War es hilfreich?

Lösung 2

hat es schließlich arbeiten. Die Lösung wurde in den folgenden Schritten:

Zuerst habe ich umbenannten tui.c zu tui.cpp

Für den Header tui.h ??folgte ich die genau gleichen Schritt des Codes Umwickeln wie hier.

dann in meinem Projekt i enthalten nur den Header ohne extern "C" Block

#include "tui.h"

Zusammengestellt und es hat funktioniert!

Andere Tipps

Wenn ich mich nicht irre (und ich könnte leicht sein), dann ist es auf Grund der Differenz in Aufrufkonventionen für C / C ++. Versuchen Sie, die Rückrufe extern „C“ zu machen, und machen sie eine C ++ Funktion aufrufen. Nennen Sie es ein Trampolin:)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top