2016-02-11 88 views
1

我有一個奇怪的問題,在這裏我得到undefined reference to "PDC_ungetch",而我可以毫無問題使用其他功能從curses.h,例如:未定義的參考`PDC_ungetch」,而其他功能PDcurses工作

有了這段代碼,我只能得到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}) 

感謝。

+2

什麼是將'ungetch'的別名引入到'PDC_ungetch'?請向我們展示*完整*來源到您的測試程序,包括任何'#include's。 – duskwuff

+0

請閱讀'http:// www.tldp.org/HOWTO/text/NCURSES- Programming-HOWTO'和類似的頁面,它們顯示沒有函數:'init_curses()' – user3629249

+0

@ user3629249對不起,我打電話給我錯誤的功能,我編輯了源,但問題仍然是一樣的。 – Aster

回答

1

如果您查看來自PDCurses的頭文件<curses.h>,則該特定函數是唯一以這種方式處理的函數:定義一個宏以使用前綴爲PDC_的函數。

如果碰巧是交叉編譯(例如Cygwin),並且如果cmake宏沒有正確設置/使用,他們可以找到系統curses庫,該庫不使用該命名約定。在這種情況下,嘗試鏈接時只會出現這一錯誤。

+0

我正在使用MinGW,但我不明白我應該怎麼做才能解決這個問題,是'cmake'設置不正確?如果是,那有什麼問題?我發佈了我的cmake安裝程序。 – Aster

+0

我建議你找到用於鏈接的實際庫。它可能不是PDCurses。 –

+0

也許我發現了一些有用的東西,我發現[this](https://github.com/aevalo/aeirc/blob/master/cmake/Modules/FindPDCurses.cmake),可能問題在於,在'cmake'中,我尋找「Curses」而不是「PDCurses」,爲了尋找後者,我應該使用類似之前鏈接的東西。問題是:我不知道如何,我對'cmake'很新,你有什麼建議怎麼做? – Aster