我有一个奇怪的问题,我得到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})
提前感谢您的帮助。
答案 0 :(得分:1)
如果你查看来自PDCurses的头文件<curses.h>
,那个特定的函数是唯一一个以这种方式处理的函数:定义一个宏来使用带有PDC_
前缀的函数。
如果碰巧是交叉编译(例如来自Cygwin),并且如果没有正确设置/使用cmake
宏,他们可以找到系统curses库,它不使用该命名约定。在这种情况下,尝试链接时只会出现一个错误。