对 `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.
时只会遇到一个错误
我遇到了一个奇怪的问题,我得到 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.