PDCurses TUI C ++ Win32控制台应用程序 - 访问冲突阅读位置(PDCurses

2019-10-23 05:21发布

我已经下载pdcurses源,并能成功地在自己的项目curses.h,链接预编译库,都好。

尝试出库的几个小时后,我看到了tuidemo.c在演示文件夹,它编译成可执行和辉煌! 正是我需要为我的项目。

现在的问题是,它是一个C代码,我的工作在VS C ++ 2008中的C ++项目。

我需要的文件是tui.c和tui.h​​我怎样可以加入我的C ++代码,C文件? 我看到了一些建议在这里

但是编译器是不是太满意的警告和错误100的。

我怎么能去上包括/使用TUI pdcurses包括!?

谢谢

编辑:

我加的extern“C”语句,所以我的测试看起来现在这个样子,但我得到一些其他类型的错误

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

虽然编译成功,它是扔在运行时错误,这表明一个坏的指针:

0xC0000005: Access violation reading location 0x021c52f9

在行

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

不知道在哪里何去何从。 再次感谢。

Answer 1:

如果我没有记错的话(我可以很容易地),这是由于调用约定的C / C ++的差异。 尝试使回调的extern“C”,并让他们打电话给C ++函数。 说它是蹦床:)



Answer 2:

终于得到了它的工作。 解决的办法是在下面的步骤:

首先,我改名tui.c到tui.cpp

为头tui.h​​,我随后如所述包裹代码完全相同的步骤在这里。

然后在我的项目,我只是不包含任何的extern“C”块标题

#include "tui.h"

编译和它的工作!



文章来源: PDCurses TUI C++ Win32 console app - Access violation reading location
标签: c++ c pdcurses