PDCurses TUI C ++ Win32 aplicación de consola - Ubicación de la lectura violación de Acceso

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

  •  27-09-2019
  •  | 
  •  

Pregunta

He descargado pdcurses fuente y fue capaz de incluir con éxito a curses.h en mi proyecto, vinculado al pre-compilados biblioteca y todo bien.

Después de unas horas de probar la biblioteca, vi la tuidemo.c en la carpeta Demos, compila en un ejecutable y brillante! exactamente lo que necesitaba para mi proyecto.

Ahora el problema es que es un código C, y estoy trabajando en un proyecto de C ++ en VS C ++ 2008.

Los archivos que necesito son tui.c y tui.h ¿Cómo puedo incluir ese archivo C en mi código C ++? Vi algunas sugerencias aquí

pero el compilador no estaba muy contento con 100 de avisos y errores.

¿Cómo puedo ir sobre la inclusión / uso que incluye pdcurses TUI!?

Gracias

EDIT:

He añadido declaración extern "C", por lo que mis miradas de prueba como esta ahora, pero estoy recibiendo algún otro tipo de error

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

A pesar de que está compilando con éxito, se está lanzando un error en tiempo de ejecución, lo que sugiere un mal indicador:

0xC0000005: Access violation reading location 0x021c52f9

en la línea

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

No está seguro de dónde ir desde aquí. gracias de nuevo.

¿Fue útil?

Solución 2

Finalmente tengo trabajo. La solución fue en los pasos siguientes:

En primer lugar Retitulé tui.c a tui.cpp

Para el tui.h ??cabecera, I siguió el exacta misma etapa de envolver el código como se describe aquí.

A continuación, en mi proyecto yo sólo incluía la cabecera sin ningún extern "C" bloque

#include "tui.h"

Compilado y funcionó!

Otros consejos

Si no estoy equivocado (y que fácilmente podría ser), que es debido a la diferencia de convenciones de llamada para C / C ++. Trate de hacer las devoluciones de llamada extern "C", y hacer que se llama a una función de C ++. Diga que es una cama elástica:)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top