设为首页 - 加入收藏 ASP站长网(Aspzz.Cn)- 科技、建站、经验、云计算、5G、大数据,站长网!
热搜: 重新 试卷 文件
当前位置: 首页 > 运营中心 > 搜索优化 > 正文

Python编写的com组件发生R6034错误的原因与解决办法

发布时间:2022-06-08 08:49 所属栏目:122 来源:互联网
导读:解决该问题的方法可以为调用本程序的exe文件建立一个合适的manifest文件,指定正确的msvcr90.dll版本即可,具体可参照http://www.jb51.net/article/35219.htm ps:可以使用mt.exe进行导出或合并manifest资源到exe或者dll文件。 查看manifest的方法:mt -input
  解决该问题的方法可以为调用本程序的exe文件建立一个合适的manifest文件,指定正确的msvcr90.dll版本即可,具体可参照http://www.jb51.net/article/35219.htm
 
  ps:可以使用mt.exe进行导出或合并manifest资源到exe或者dll文件。
 
  查看manifest的方法:mt -inputresource:pythoncom27.dll;#2 -out:sss.txt
 
  合并manifest到dll的方法:
 
  mt.exe –manifest MyApp.exe.manifest -outputresource:MyApp.exe;1
 
  or
 
  mt.exe –manifest MyLibrary.dll.manifest -outputresource:MyLibrary.dll;2
 
  (1 for an EXE, 2 for a DLL.)
 
  ps:2010.12.24
 
  如果是使用c++开发dll,那么使用libcmtd.lib或者libcmt.lib 替换掉 msvcrtd.lib 或 msvcrtd.lib也可以避免这个问题。
 
  ps:内牛碗面
 
  测试regsvr32 pythoncom27.dll一直是失败,即使使用mt嵌入了manifest信息也不行,当我把windowssystem32目录下的 pythoncom27.dll和pywintypes27.dll改名后,才行。原来regsvr32默认都是在处理windowssystem32 目录下的dll,即使当前目录有也不管。。。。。。无语了。终于出现“已加载***.dll,但没有找到dllregisterserver输入点…..”。看来想dll中嵌入manifest信息是管用的。。下次最好写上目录,如:regsvr32 .pythoncom27.dll
 
  ps:2010.12.26 完美解决
 
  我使用的python2.7以及截止目前的2.6–3.1版本python的pyd文件根 据python.org的建议(要求),全部没有manifest信息。这是为了更好的在程序运行时根据python.exe提供的crt来运行。 pywin32提供的pythoncom27.dll以及pywintypes27.dll也没有manifest信息。这样一般情况都没有问题,只是当 使用python制作的dll类型的com组件时会发生R6034错误。解决的办法有2个:为调用com组件的exe制作一个manifest文件,指明 msvcr90.dll的依赖;或者把所有使用到的dll以及pyd都嵌入manifest信息。
 
  为什么根本就没有人研究这个信息呢?也许广大的pythoner都不玩com吧。

(编辑:ASP站长网)

    网友评论
    推荐文章
      热点阅读