2017-12-31 45 views
1

OS X 10.13.2(ハイシエラ)。Cursesライブラリは、OS Xハイサイエラでワイド文字をサポートしません

最も簡単なプログラム例(hereから):

私はWIDECHARサポートで簡単な呪いプログラムを作成しようとしているが、それが表示され、そのデフォルト(プリインストールライブラリ)呪いはWIDECHARをサポートしていません

#include <ncursesw/ncurses.h> 
#include <locale.h> 
#include <wchar.h> 

int main() { 
    setlocale(LC_ALL, ""); 
    initscr(); 
    wchar_t wstr[] = { 9474, L'\0' }; 
    mvaddwstr(0, 0, wstr); 
    refresh(); 
    getch(); 
    endwin(); 
    return 0; 
} 

コンパイルされませんが、エラーを与える:

test.cpp:1:10: fatal error: 'ncursesw/ncurses.h' file not found

はマニュアルページで見つけることを試みた:

manページが言うように

man addwstr says:

#include <curses.h> 

    int addwstr(const wchar_t *wstr); 
    int addnwstr(const wchar_t *wstr, int n); 
    int waddwstr(WINDOW *win, const wchar_t *wstr); 
    int waddnwstr(WINDOW *win, const wchar_t *wstr, int n); 
    int mvaddwstr(int y, int x, const wchar_t *wstr); 
    int mvaddnwstr(int y, int x, const wchar_t *wstr, int n); 
    int mvwaddwstr(WINDOW *win, int y, int x, const wchar_t *wstr); 
    int mvwaddnwstr(WINDOW *win, int y, int x, const wchar_t *wstr, int n); 

は、 "curses.hは" の代わりに "ncursesw/ncurses.h" を含めることを試みました。再度コンパイルエラー:

test.cpp:9:5: error: use of undeclared identifier 'mvaddwstr'; did you mean 'mvaddstr'?

/usr/includeにあるwidechar関連のcursesヘッダーを検索しようとしました。検索結果はありません。助言がありますか?

答えて

1

あなたは、このようなコマンドを使用している場合(<curses.h>を使用して)2番目の例では、MacOSので動作します:

gcc -o foo -D_XOPEN_SOURCE_EXTENDED foo.c -lncurses 

です:

  • あなたは広いを作るために定義をオンにする必要があり-character features(ヘッダーファイルを参照すると分かります)、
  • ライブラリ名は "ncurses"です(ただし、ワイド文字の関数が含まれています)。

    0000000000024c39 T _addwstr 
    0000000000024fba T _mvaddwstr 
    00000000000254ad T _mvwaddwstr 
    000000000002580c T _waddwstr 
    

nm /usr/lib/libncurses.dylib | grep addwstr 

はこれを見ています

関連する問題