我下载了pdcurses源代码,并成功地将curses.h包含在我的项目中,链接了预编译的库,一切正常。
在试用这个库几个小时后,我在demos文件夹中看到tuidemo.c,并将其编译成一个可执行的和出色的!正是我的项目所需要的。
现在的问题是它是C代码,我正在VS C++ 2008中开发一个C++项目。
我需要的文件是tui.c和tui.h
如何将C文件包含在C++代码中?我看到few suggestions here
但是编译器对100个警告和错误不太满意。
我怎样才能继续包括/使用TUI pdcurses includes!?
感谢
编辑:
我添加了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");

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

最佳答案

如果我没有错(我可以很容易地),这是因为C/C++的调用约定不同。尝试让回调“C”,并使它们调用C++函数。叫它蹦床:)

关于c++ - PDCurses TUI C++ Win32控制台应用程序-访问冲突读取位置,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3044603/

10-08 21:25