py2exe 编译的程序运行时出现Runtime Error的解决方法

[关键字:wxPython ActiveX ocx py2exe Runtime Error]

Python写Winform程序,使用 wxPython做界面,用 py2exe编译成exe,由于使用到了ActiveX控件,导致编译出的exe程序不能运行,并且提示以下错误:

Runtime Error!

This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.

google一番之后在 这里发现跟我类似的情况。其中说到,有些DLL被打包进一个exe后不能正常工作,需要使用将setup.py文件中的boundle_file设置为3。我按照说明把boundle_file设置为3重新编译,再运行虽然不出上面错误,但却不能显示主窗口。

在后来的回帖中作者提到在setup.py中加入下面的语句:
'typelibs' : [('{EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B}', 0, 1, 1)]
一开始也不明白这个语句加在什么地方,于是就想到看看py2exe的有没有类似的例子,还真有!在D:\Python25\Lib\site-packages\py2exe\samples\pywin32\com_typelib\build_gen\word(我把Python安装在了D盘)目录下,打开setup.py发现这样一条注释:
#'win32com/client/makepy.py -i' to find a typelib
隐约觉得这里可能有我要找的信息,于是在命令提示符下运行如下命令:
d:\Python25\Lib\site-packages\win32com\client\makepy.py -i
该命令会弹出一个小窗口,在其中找到引用的ActiveX控件,然后确定,会输出一些该控件的信息,其中包括该控件的LIBID,lcid,major和minor值,用这些信息替换到上述语句中的相应值,再重新编译,程序终于可以正常运行了!


示例是一个用Adobe Acrobat 7.0 ActiveX Control打开PDF文件的程序,试验环境是:

Windows2003
Python 2.5
wxPython 2.8
py2exe-0.6.9.win32-py2.5
pywin32-212.win32-py2.5

 

示例下载

转载于:https://www.cnblogs.com/donna/archive/2009/06/08/1498378.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值