Gtk-WARNING **:gtk_disable_setlocale() must be called befor

博客讲述了在opencv中使用imshow与QT窗口系统冲突的问题,由于imshow不可移除,作者选择了libhv库作为替代方案进行UDP通信。通过创建UdpServer并设置回调函数,实现了对UDP消息的监听和响应。代码示例展示了如何处理接收到的消息并发送回复,但原始代码并不直接回复UDP消息。文章提供了QUdpSocket通信的基础知识,并探讨了在不使用QT窗口系统的情况下处理UDP通信的方法。

Gtk-WARNING **:gtk_disable_setlocale() must be called befor

错误记录
我搜索了一下产生原因,是由于QT窗口系统与Opencv中的imshow产生的窗体冲突。imshow是需求,不能移除,那就只有考虑不使用QT窗口系统。其实我也不想和QT窗口系统扯上关系,主要是涉及到的QUdpSocket通信,详情可以查看《QUdpSocket通信简易实例》。这个其中的信号(signal)必须搭配值槽函数使用,而槽函数就是QT窗口系统中的,要定义槽函数,必须继承QObject,所以貌似要使用QUdpSocket就必须要和QT窗口系统扯上关系。所以我使用了替代方案:libhv

Like libevent, libev, and libuv, libhv provides event-loop with non-blocking IO and timer, but simpler api and richer protocols.

#include "UdpServer.h"
using namespace hv;

int main() {


    int port = atoi("8179");

    UdpServer srv;
    int bindfd = srv.createsocket(port);
    if (bindfd < 0) 
### 解决 Linux 系统中 VMware Tools 的 Gtk-WARNING 问题及 vmware-user-suid-wrapper 命令后的警告信息 在 Linux 系统中使用 VMware Tools 时,如果遇到 `Gtk-WARNING` 或 `gtk_disable_setlocale must be called before gtk_init` 的警告信息,通常与 GTK 库的配置、依赖项缺失或 VMware Tools 的安装不完整有关。以下是详细解决方案: #### 1. 安装缺失的 GTK 依赖项 某些情况下,VMware Tools 的图形界面功能需要额外的 GTK 库支持。可以通过以下命令安装所需的依赖项: ```bash sudo apt-get install gtk2-engines:i386 sudo apt-get install gtk2-engines-*:i386 sudo apt-get install libgtkmm-2.4-1c2:i386 sudo apt-get install libcanberra-gtk-module:i386 ``` 这些命令将安装必要的 GTK 引擎和模块,确保 VMware Tools 能够正常运行[^1]。 #### 2. 配置 Locale 设置 `gtk_disable_setlocale must be called before gtk_init` 的警告通常是因为系统 Locale 设置未正确初始化。可以通过以下步骤解决: - 检查当前系统的 Locale 设置: ```bash locale ``` - 如果输出中显示 `C` 或 `POSIX`,则需要重新生成正确的 Locale: ```bash sudo dpkg-reconfigure locales ``` 在交互式界面中选择适合的 Locale(如 `en_US.UTF-8` 或 `zh_CN.UTF-8`)。 - 确保环境变量中设置了正确的 Locale: ```bash export LANG=en_US.UTF-8 export LANGUAGE=en_US.UTF-8 export LC_ALL=en_US.UTF-8 ``` 将上述命令添加到 `~/.bashrc` 文件中以永久生效: ```bash echo "export LANG=en_US.UTF-8" >> ~/.bashrc echo "export LANGUAGE=en_US.UTF-8" >> ~/.bashrc echo "export LC_ALL=en_US.UTF-8" >> ~/.bashrc source ~/.bashrc ``` #### 3. 更新 VMware Tools 旧版本的 VMware Tools 可能存在兼容性问题,导致警告信息出现。可以通过以下步骤更新 VMware Tools: 1. 在 VMware 菜单中选择“虚拟机 > 安装 VMware Tools”。 2. 卸载现有 VMware Tools: ```bash sudo vmware-uninstall-tools.pl ``` 3. 挂载 VMware Tools ISO 并安装最新版本: ```bash sudo mount /dev/cdrom /mnt cd /mnt sudo ./vmware-install.pl ``` #### 4. 处理 vmware-user-suid-wrapper 命令后的警告信息 `vmware-user-suid-wrapper` 是 VMware Tools 的一个辅助工具,用于管理用户级别的功能(如剪贴板同步)。如果执行 `vmware-user-suid-wrapper vmware-setsharedfolders enable` 后出现警告信息,可以尝试以下方法: - 确保 VMware Tools 已正确安装并启用了用户级功能: ```bash sudo service vmware-tools restart ``` - 检查是否启用了共享文件夹功能: ```bash vmware-toolbox-cmd sharedfolder list ``` 如果未启用,可以通过 VMware 虚拟机设置界面手动启用共享文件夹功能[^1]。 #### 5. 示例代码:检查并修复 VMware Tools 配置 以下是一个脚本,用于自动检测并修复 VMware Tools 的配置问题: ```bash #!/bin/bash # 检查 VMware Tools 状态 status=$(vmware-toolbox-cmd status) if [[ $status != *"running"* ]]; then echo "VMware Tools is not running. Attempting to restart..." sudo service vmware-tools restart fi # 安装缺失的 GTK 依赖项 sudo apt-get update sudo apt-get install -y gtk2-engines:i386 gtk2-engines-*:i386 libgtkmm-2.4-1c2:i386 libcanberra-gtk-module:i386 # 配置 Locale 设置 export LANG=en_US.UTF-8 export LANGUAGE=en_US.UTF-8 export LC_ALL=en_US.UTF-8 # 启用共享文件夹功能 vmware-user-suid-wrapper vmware-setsharedfolders enable ```
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

来日可期1314

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值