johnzchgrd 发表于 2023-6-19 22:42:27

记录下解决“Operation not supported or unimplemented on this platform”报错

【efinity版本:2021.2.323.1.8,打了patch,windows 10】
本来programmer和debugger用的好好的,突然不知道从什么时候开始,都打不开了。查看log/console发现报错:Operation not supported or unimplemented on this platform
进一步排查发现报错和libusb相关。

尝试重新安装相同版本的efinity,结果还是一样的报错。尝试了FT232H、FT2232H的下载器,都是一样的报错。
安装2022.2的efinity,这个问题就神奇的解决了。。。
当时考虑到项目管理问题,没有直接换成2022.2。


今天突发奇想,深入探究下是什么原因。
终于在通过process explorer查看两个版本的programmer都加载了哪些dll的时候发现了不同:2021.2的加载的是libusb-1.0.dll,而2022.2加载的是libusb0.dll!


于是我把libusb-1.0.dll都删掉,然后打开2021.2的programmer,没有报错了!!


进一步看了下代码,发现2022.2的“C:\Efinity\2022.2\pgm\bin\efx_pgm\usb_resolver.py”文件的45行附近相比2021.2的多了这样一段代码:


if platform == 'win32':
    # On Windows, Prefer libusb0 since it is more stable
    UsbTools.BACKENDS = ('usb.backend.libusb0', 'usb.backend.libusb1')看来确实得用libusb0。。。

我在删除所有libusb-1.0.dll之前,尝试过在2021.2的usb_resolver.py的相同位置添加代码,却还是加载的libusb-1.0.dll,可能不能直接改源代码吧。。。

(这件事告诉我们最好用最新版的efinity软件:)

CrazyBingo 发表于 2023-6-23 15:02:55

这就是传说的 工匠精神
页: [1]
查看完整版本: 记录下解决“Operation not supported or unimplemented on this platform”报错