对 `PDC_ungetch' 的未定义引用,而其他函数在 PDcurses 中工作

undefined reference to `PDC_ungetch' while other functions work in PDcurses

我遇到了一个奇怪的问题,我得到 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})

在此先感谢您的帮助。

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

如果你碰巧在交叉编译(例如来自 Cygwin),并且如果 cmake 宏不 setup/used 正确,他们可以找到系统 curses 库,它不使用那个命名约定。在这种情况下,您在尝试 link.

时只会遇到一个错误