PDCurses TUI C++ Win32 控制台应用程序 - 访问冲突读取位置
题
我已经下载了 诅咒 源并能够成功地将curses.h包含在我的项目中,链接预编译的库,一切都很好。
经过几个小时的试用该库后,我在 demos 文件夹中看到了 tuidemo.c,将其编译为可执行文件,非常棒!正是我的项目所需要的。
现在的问题是它是 C 代码,而我正在 VS c++ 2008 中处理 C++ 项目。
我需要的文件是 tui.c 和 tui.h 如何将该 C 文件包含在我的 C++ 代码中?我看见 这里有一些建议
但编译器对数百个警告和错误不太满意。
我怎样才能继续包含/使用 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");
不知道从这里去哪里。再次感谢。
解决方案 2
终于成功了。解决方案如下:
首先我将tui.c重命名为tui.cpp
对于标题 tui.h,我遵循 精确的 如所描述的包装代码的相同步骤 这里。
然后在我的项目中我只是包含了没有任何外部“C”块的标头
#include "tui.h"
编译成功了!
其他提示
如果我没有记错(我也很容易定),这是由于对C / C中调用约定的差++。尝试使回调的extern“C”,并让他们打电话给C ++函数。称之为一个蹦床:)
不隶属于 StackOverflow