CLion通过WSL2运行OpenCV代码报错,如何配置直接用WSL终端运行?
解决CLion搭配WSL2运行OpenCV程序的GTK初始化错误及终端配置问题
错误原因
当通过CLion或PowerShell直接调用wsl.exe执行程序时,没有传递图形界面所需的DISPLAY环境变量,导致OpenCV的GTK后端无法初始化。而在WSL终端内运行正常,是因为终端已自动加载了图形界面的环境配置。
解决步骤
1. 确保WSL图形界面环境正常
- 安装XServer工具(如VcXsrv、X410),启动时勾选Disable access control选项,允许WSL连接。
- 在WSL终端中执行以下命令配置永久生效的环境变量:
执行后在WSL终端内运行程序,确认图形界面可正常显示。echo "export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}'):0" >> ~/.bashrc echo "export LIBGL_ALWAYS_INDIRECT=1" >> ~/.bashrc source ~/.bashrc
2. 配置CLion使用WSL终端运行程序
方法一:修改目标程序的运行配置
- 打开CLion的Run/Debug Configurations(右上角运行按钮旁的下拉菜单 → Edit Configurations)
- 选中你的目标程序配置:
- 勾选Run in terminal选项,让程序在终端中启动
- 在Environment variables中添加
DISPLAY=:0(若XServer配置特殊,可替换为WSL终端中echo $DISPLAY的输出值) - 确认Working directory设置为WSL路径格式(如
/mnt/c/Users/xxx/...)
方法二:设置CLion默认终端为WSL终端
- 打开CLion的Settings(File → Settings)
- 进入Tools → Terminal,将Shell path设置为:
C:\WINDOWS\system32\wsl.exe -d Ubuntu-20.04 - 保存设置后,再次运行程序时会自动在WSL终端中启动,继承终端的图形界面环境配置。
验证
配置完成后,直接在CLion中运行程序,会弹出WSL终端并正常加载OpenCV的图形窗口,不再出现GTK初始化错误。
内容的提问来源于stack exchange,提问作者H.Potter
相关产品推荐
相关产品推荐

