我尝试编译这个自定义 QT 小部件,以提供一个可以嵌入到我的应用程序中的终端。我已经在 Cmake 完成之前为我需要的程序编译/安装了构建工具,但 make 步骤抛出了谷歌不太有帮助的错误:
[ 50%] Building CXX object CMakeFiles/qtermwidget5.dir/lib/kpty.cpp.o
/Users/a7c/qtermwidget/qtermwidget-master/lib/kpty.cpp:506:26: error: no member named 'ut_name' in 'utmpx'
strncpy(l_struct.ut_name, user, sizeof(l_struct.ut_name));
~~~~~~~~ ^
/Users/a7c/qtermwidget/qtermwidget-master/lib/kpty.cpp:506:57: error: no member named 'ut_name' in 'utmpx'
strncpy(l_struct.ut_name, user, sizeof(l_struct.ut_name));
~~~~~~~~ ^
/Users/a7c/qtermwidget/qtermwidget-master/lib/kpty.cpp:617:20: error: no member named 'ut_name' in 'utmpx'
memset(ut->ut_name, 0, sizeof(*ut->ut_name));
~~ ^
/Users/a7c/qtermwidget/qtermwidget-master/lib/kpty.cpp:617:44: error: no member named 'ut_name' in 'utmpx'
memset(ut->ut_name, 0, sizeof(*ut->ut_name));
~~ ^
4 errors generated.
make[2]: *** [CMakeFiles/qtermwidget5.dir/lib/kpty.cpp.o] Error 1
make[1]: *** [CMakeFiles/qtermwidget5.dir/all] Error 2
make: *** [all] Error 2
有人有解决这个问题的方法吗?
作为扩展,究竟如何有效地包含可在QT Creator中使用的自定义小部件?
http://pubs.opengroup.org/onlinepubs/7908799/xsh/utmpx.h.html
看起来它不包括 utmpx.h 的股票版本中的ut_name
。
如果你看一下这个版本:
https://code.woboq.org/kde/include/bits/utmp.h.html
他们有一个"向后兼容性黑客":
87 /* Backwards compatibility hacks. */
88 #define ut_name ut_user
您可能希望升级包含该标头的库。或者只是将该#define
插入到代码中。 作为一个好的 github 公民,如果它有效,你应该做一个拉取请求和/或提交一个关于它的问题,这样下一个使用该库的人就不会遇到同样的问题。
希望有帮助。
为什么会出现问题,因为根据我检查的所有文件,所有内容都正确命名。
不过,将#define ut_user ut_name
添加到kpty.h解决了这个问题。