文章目录
- 软件闪退问题
- 原理,解决过程
- 1. GNURadio Companion是如何启动的
- 2. 用命令行启动方式来定位错误
- 3. 转换思路,解决方法
软件闪退问题
最近这段时间,在不同电脑的Windows运行GNURadio软件,都出现了刚打开软件就闪退的问题,而在旧电脑WIN7断网的时候又能正常打开,困惑
把正常运行的GNU整个文件夹拷贝过来,还是闪退,更困惑了,几乎没动过GNU的这些文件,怎么就突然打不开了?
卸载,再重装GNU,也不行。
原理,解决过程
1. GNURadio Companion是如何启动的
一般我们从 GNURadio Companion 图标进入GNU软件,而右键看它的属性,路径只是个命令行:(用 run_gr.bat 去运行 gnuradio-companion.py)
1 | D:\GNURadio\bin\run_gr.bat gnuradio-companion.py |
其实图标 GNURadio Command Prompt (开始菜单里有)就是 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行:
1 | D:\GNURadio\gr-python27\lib\site-packages\gtk-2.0\gtk\__init__.py |
打开定位到40行:
1 | from gtk import _gtk |
没看见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了!
完毕。