我刚刚编写了一个 C++] 程序,它使用方框字符来显示信息。\xc2\xa0\nI\xc2\xa0在 macOS 上运行该程序并使用终端应用程序,它运行良好。
\n当我使用相同的代码切换到Debian Linux并重新编译它时,\n我\xc2\xa0才遇到这个问题!\xc2\xa0\n我\在网上搜索了答案,\n但我\xc2\xa0没有找到与这个问题。\xc2\xa0\n我已经\xc2\xa0 使用LXTerminal和\xc2\xa0 URXVT测试了这个问题。
\n这是这个问题的最小可重现示例:
\n#include <ncurses.h>\n#include <iostream>\n\nint ch;\n\nint main() {\n setlocale(LC_CTYPE, "");\n initscr();\n noecho();\n keypad(stdscr, true);\n nodelay(stdscr, true);\n curs_set(0);\n start_color();\n use_default_colors();\n\n init_pair(1, COLOR_BLUE, -1);\n\n clear();\n refresh();\n\n while ((ch = getch()) != \'q\' && ch != \'Q\') {\n\n attrset(COLOR_PAIR(1));\n\n mvprintw(0,0,"\xe2\x94\x8f\xe2\x94\x81\xe2\x94\x93");\n mvprintw(1,0,"\xe2\x94\x97\xe2\x94\x81\xe2\x94\x9b");\n\n }\n\n refresh();\n endwin();\n\n return 0;\n}\n
Run Code Online (Sandbox Code Playgroud)\n使用以下命令编译此演示:
\ng++ -g -c -o main.o test.cpp && g++ -g -o test main.o -std=c++11 -Wall -pedantic -lncurses\n
Run Code Online (Sandbox Code Playgroud)\n或者 …
尝试运行命令gcc code.cpp -o runthis
但是它给了我这种格式的错误:
/usr/bin/ld: /tmp/cco6J3Vh.o: warning: relocation against `_ZSt4cout' in read-only section `.text'
/usr/bin/ld: /tmp/cco6J3Vh.o: in function `main':
code.cpp:(.text+0x28): undefined reference to `std::cout'
/usr/bin/ld: code.cpp:(.text+0x30): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)'
/usr/bin/ld: code.cpp:(.text+0x3e): undefined reference to `std::cin'
/usr/bin/ld: code.cpp:(.text+0x46): undefined reference to `std::istream::operator>>(int&)'
/usr/bin/ld: code.cpp:(.text+0x9e): undefined reference to `std::cout'
/usr/bin/ld: code.cpp:(.text+0xa6): undefined reference to `std::ostream::operator<<(int)'
/usr/bin/ld: code.cpp:(.text+0xbb): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)' …
Run Code Online (Sandbox Code Playgroud)