1

我遇到了一个奇怪的问题,undefined reference to "PDC_ungetch"虽然我可以毫无问题地使用 curses.h 中的其他功能,例如:

#include <curses.h>

int main(){
    initscr();
    int ch = getch();
    ungetch(ch);
    return 0;
}

使用此代码,我只能undefined reference to "PDC_ungetch"initscr()没有问题的情况下获得,这会是什么问题?

我的 CMake 如下:

cmake_minimum_required(VERSION 3.3)
project(rogue)

set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Werror")

set(SOURCE_FILES main.c gamelib.c gamelib.h maze.c maze.h) //these are other files I use

find_package(Curses REQUIRED)
include_directories(${CURSES_INCLUDE_DIR})

add_executable(rogue ${SOURCE_FILES} gamelib.c gamelib.h maze.c maze.h) //Same here

target_link_libraries(rogue ${CURSES_LIBRARIES})

在此先感谢您的帮助。

4

1 回答 1

1

如果您查看<curses.h>PDCurses 的头文件,则该特定函数是唯一以这种方式处理的函数:定义一个宏以使用带有PDC_前缀的函数。

如果您碰巧在进行交叉编译(例如来自 Cygwin),并且如果cmake未正确设置/使用宏,他们可能会找到不使用该命名约定的系统 curses 库。在这种情况下,您在尝试链接时只会收到一个错误。

于 2016-02-11T21:53:51.813 回答