Application console PDCurses TUI C++ Win32 - Emplacement de lecture de violation d'accès

StackOverflow https://stackoverflow.com/questions/3044603

  •  27-09-2019
  •  | 
  •  

Question

j'ai téléchargé pdcurses source et j'ai réussi à inclure Curses.h dans mon projet, à relier la bibliothèque précompilée et tout va bien.

Après quelques heures d'essai de la bibliothèque, j'ai vu le tuidemo.c dans le dossier demos, je l'ai compilé en un exécutable et génial !exactement ce dont j'avais besoin pour mon projet.

Maintenant, le problème est que c'est un code C et je travaille sur un projet C++ dans VS c++ 2008.

Les fichiers dont j'ai besoin sont tui.c et tui.h ​​Comment puis-je inclure ce fichier C dans mon code C ++?J'ai vu quelques suggestions ici

mais le compilateur n'était pas très satisfait des centaines d'avertissements et d'erreurs.

Comment puis-je continuer à inclure/utiliser ce que TUI pdcurses inclut !?

Merci

MODIFIER:

J'ai ajouté l'instruction externe "C", donc mon test ressemble à ceci maintenant, mais j'obtiens un autre type d'erreur

#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;
}

Bien qu'il compile avec succès, il renvoie une erreur au moment de l'exécution, ce qui suggère un mauvais pointeur :

0xC0000005: Access violation reading location 0x021c52f9

à la ligne

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

Je ne sais pas où aller d'ici.Merci encore.

Était-ce utile?

La solution 2

Finalement, ça a fonctionné.La solution se trouvait dans les étapes ci-dessous :

J'ai d'abord renommé tui.c en tui.cpp

Pour l'en-tête tui.h, j'ai suivi le exact même étape d'encapsulation du code comme décrit ici.

puis dans mon projet j'ai juste inclus l'en-tête sans aucun bloc "C" externe

#include "tui.h"

Compilé et ça a fonctionné !

Autres conseils

Si je ne me trompe pas (et je pourrais facilement), il est dû à la différence dans les conventions d'appel C / C ++. Essayez de faire les callbacks de « C », et de les faire appeler une fonction C ++. Appelez un trampoline:)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top