找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 3721|回复: 2

[求助] pyinstaller 改变了原始的dll,在不同的windows系统结果不一样

6

主题

14

帖子

14

积分

贫民

积分
14
pythonpython 发表于 2017-10-27 11:02:07 | 显示全部楼层 |阅读模式
本帖最后由 pythonpython 于 2017-10-27 11:05 编辑

我有2个系统,一个win 10 和一个win7 共2台机器
每台机器都安装了anaconda, 同一个版本的pyinstaller, 同一个版本的shapely

在anaconda下面,都有这个dll geos_c.dll, 暂且叫A_dll  win7 和 win10是一样的。

现在我有一个程序,叫main.py, 调用了shapely, shapely又调用了geos_c.dll

在win10, 用pyinstaller main.py, 产生一个包裹,含有main.exe, geos_c.dll(暂且叫B_dll, 它比A_dll大)等, main.exe 只能在win10 跑,不能在win7跑。

在win7, 用pyinstaller main.py, 产生一个包裹,含有main.exe, geos_c.dll(暂且叫C_dll, 和B_dll内容不一样,大小一样)等, main.exe 可以同时在win7 和win10跑。

我还做了几个实验
1. A_dll 替换在win10下的B_dll, main.exe  就变得可以同时在win 10 和win7下跑了。

有几个问题
1. pyinstaller 为什么会改动原始的dll, 它是加了什么东西到dll里面吗?
2. pyinstaller 在win7 和win 10 给dll加个东西还不一样?
3. 怎么解决这个问题,我现在是想用win10 来通过pyinstaller 产生main.exe, 如何才能让main在win7下工作? (因为我做得东西需要同时给win10和win7的人用)

为了大家容易检查 我把几个dll放在这里
原始的A_dll   https://ufile.io/43tdi
win7 下产生的   https://ufile.io/qivsy
win10下产生的  https://ufile.io/c2evc



回复

使用道具 举报

3

主题

278

帖子

278

积分

侠客

积分
278

热心会员

uitb 发表于 2017-10-27 18:43:26 | 显示全部楼层
猜猜,有可能是兼容性的原因?win10向下兼容,可以运行win7的软件,而win7不能向上兼容,不能运行win10的编译的软件,猜测,深层原因不知。。。
回复 支持 反对

使用道具 举报

0

主题

1

帖子

1

积分

贫民

积分
1
副领事 发表于 2017-11-13 20:51:44 | 显示全部楼层
楼主 试试看看这个能帮到你么 微软官方关于在win10上开发的软件在所有现行win操作系统上兼容的方法

https://blogs.msdn.microsoft.com ... -the-universal-crt/
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表