我下载了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/