【问题标题】:Problems setting up Ncurses and C++设置 Ncurses 和 C++ 的问题
【发布时间】:2014-02-12 16:33:36
【问题描述】:

我对 C++ 还很陌生,我正在尝试设置 ncurses,但我无法让它工作。 代码如下:

#include <iostream>
#include <string>
#include <ncurses.h>
      int main(){
        initscr();
        printw("Hello World !!!");
        refresh();
        getch();
        endwin();
        return 0;
    }

使用这个文件我得到“未定义的引用”错误

这是生成文件:

main.o: main.cpp ncurses.h
    g++ main.cpp -o crawler -lncurses

生成文件的错误是:

make: *** No rule to make target `ncurses.h', needed by `main.o'.  Stop.

感谢您的帮助!

注意:我正在使用带有 Geany 和 g++ 的 Ubuntu 12.04

【问题讨论】:

  • main.o: main.cpp ncurses.h中删除ncurses.h,你不需要那个,这也是C代码不是C++
  • @user2485710 不能同时使用 ncurses 和 C++ 吗?我以为你可以。我以前见过它的工作原理。
  • @user68537 我相信你仍然可以在 c/c++ 中使用 ncurses,你只是不必在 makefile 中定义 ncurses.h。
  • 是的,你可以,但是帖子不应该被标记为c++,因为整个sn-p都是C,你使用的函数都来自C世界,并且如果你想在C++ 应用程序中使用C 代码,你应该使用extern "C",谷歌了解更多关于关键字extern 的信息。
  • makefile 中的依赖项必须使用绝对路径或相对于当前工作目录的路径来指定。通常,您不会将库头作为依赖项,因为库头不会被修改。

标签: c++ makefile ncurses


【解决方案1】:

您应该从 Makefile 中删除 ncurses.h 依赖项。你的 Makefile 应该是这样的:

main.o: main.cpp
    g++ main.cpp -o crawler -lncurses

make 尝试在当前工作目录中查找ncurses.h,但在那里不可用。所以make表示错误。

此外,您的代码中不需要 iostreamstring 标头,因为 string 标头包含在 iostream 中,并且您没有使用这两个标头中的任何函数。

【讨论】:

    猜你喜欢
    • 2020-04-11
    • 1970-01-01
    • 1970-01-01
    • 2013-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多