我已经下载了 诅咒 源并能够成功地将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 ++函数。称之为一个蹦床:)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top