【GNURadio】解决 “failed to initialize gtk. DLL load failed” 错误导致的软件闪退问题


软件闪退问题

最近这段时间,在不同电脑的Windows运行GNURadio软件,都出现了刚打开软件就闪退的问题,而在旧电脑WIN7断网的时候又能正常打开,困惑

把正常运行的GNU整个文件夹拷贝过来,还是闪退,更困惑了,几乎没动过GNU的这些文件,怎么就突然打不开了?

卸载,再重装GNU,也不行。


原理,解决过程

1. GNURadio Companion是如何启动的

一般我们从 GNURadio Companion 图标进入GNU软件,而右键看它的属性,路径只是个命令行:(用 run_gr.bat 去运行 gnuradio-companion.py)

D:\GNURadio\bin\run_gr.bat gnuradio-companion.py

其实图标 GNURadio Command Prompt (开始菜单里有)就是 run_gr.bat:
run_gr.bat
就是设置GNU的运行环境,设置 PYTHONHOME、PYTHONPATH、PATH、GRC_BLOCKS_PATH、UHD 设备环境、最后用 python.exe 运行 gnuradio-companion.py 文件。

2. 用命令行启动方式来定位错误

于是打开 GNURadio Command Prompt 弹出的cmd窗口,输入命令 run_gr.bat gnuradio-companion.py,报错:
在这里插入图片描述
初始化GTK失败?什么SSH(关我P事)?
DLL加载失败,找不到指定程序。
不懂,是GTK模块那的问题?

于是,命令行运行python,单独 import gtk,或者在pycharm里单独开个程序来import,都报错:
控制台报错信息
看见具体的文件的哪一行报错了,找到这文件第40行:

D:\GNURadio\gr-python27\lib\site-packages\gtk-2.0\gtk\__init__.py

打开定位到40行:

from gtk import _gtk

__init__.py
没看见DLL啊?

_gtk是啥?在 D:\GNURadio\gr-python27\lib\site-packages\gtk-2.0\gtk 里边有个 _gtk.pyd 文件,难道坏了?上网搜了 _gtk.pyd 的32位和64位的文件下载来替换,没能解决。

有关gtk的DLL文件,就一个 gtk-win32-2.0.dll ,也上网搜了下载来替换,依旧没能解决。

3. 转换思路,解决方法

既然是 import gtk 过程出错,去谷歌搜 from gtk import _gtk DLL load failed,在 Stack Overflow 找到了这个:Error Importing GTK

其中有回答叫安装 PyGTK 的,下载下来发现需要系统直接安装py2的环境才能安装,而GNU用的自带py2,该答案没起作用。

看最后一个答案:
答案
说的是:把系统的 System32 目录下的 zlib1.dll 文件删掉
搜了一下:
搜索结果
系统里这文件还挺多的,GNU的bin文件夹下都有它。

最后,把System32 目录下的这个文件备份,删掉,终于能运行GNU了!

完毕。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值