Python編寫的com組件發(fā)生R6034錯誤的原因與解決辦法
更新時間:2013年04月01日 19:36:56 作者:
pythoncom27.dll可能沒有包含manifest信息,或者沒有包含正確的manifest信息,或者系統中的c++ runtime library受到破壞都有可能造成這種現象
解決該問題的方法可以為調用本程序的exe文件建立一個合適的manifest文件,指定正確的msvcr90.dll版本即可,具體可參照http://www.dhdzp.com/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++開發(fā)dll,那么使用libcmtd.lib或者libcmt.lib 替換掉 msvcrtd.lib 或 msvcrtd.lib也可以避免這個問題。
ps:內牛碗面
測試regsvr32 pythoncom27.dll一直是失敗,即使使用mt嵌入了manifest信息也不行,當我把windows\system32目錄下的 pythoncom27.dll和pywintypes27.dll改名后,才行。原來regsvr32默認都是在處理windows\system32 目錄下的dll,即使當前目錄有也不管。。。。。。無語了。終于出現“已加載***.dll,但沒有找到dllregisterserver輸入點…..”??磥硐雂ll中嵌入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組件時會發(fā)生R6034錯誤。解決的辦法有2個:為調用com組件的exe制作一個manifest文件,指明 msvcr90.dll的依賴;或者把所有使用到的dll以及pyd都嵌入manifest信息。
為什么根本就沒有人研究這個信息呢?也許廣大的pythoner都不玩com吧 ==||
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++開發(fā)dll,那么使用libcmtd.lib或者libcmt.lib 替換掉 msvcrtd.lib 或 msvcrtd.lib也可以避免這個問題。
ps:內牛碗面
測試regsvr32 pythoncom27.dll一直是失敗,即使使用mt嵌入了manifest信息也不行,當我把windows\system32目錄下的 pythoncom27.dll和pywintypes27.dll改名后,才行。原來regsvr32默認都是在處理windows\system32 目錄下的dll,即使當前目錄有也不管。。。。。。無語了。終于出現“已加載***.dll,但沒有找到dllregisterserver輸入點…..”??磥硐雂ll中嵌入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組件時會發(fā)生R6034錯誤。解決的辦法有2個:為調用com組件的exe制作一個manifest文件,指明 msvcr90.dll的依賴;或者把所有使用到的dll以及pyd都嵌入manifest信息。
為什么根本就沒有人研究這個信息呢?也許廣大的pythoner都不玩com吧 ==||
您可能感興趣的文章:
- Python運行的17個時新手常見錯誤小結
- Python 錯誤和異常小結
- Python程序員開發(fā)中常犯的10個錯誤
- python新手經常遇到的17個錯誤分析
- python錯誤:AttributeError: ''module'' object has no attribute ''setdefaultencoding''問題的解決方法
- python錯誤處理詳解
- Python提示[Errno 32]Broken pipe導致線程crash錯誤解決方法
- python base64 decode incorrect padding錯誤解決方法
- Python中設置變量作為默認值時容易遇到的錯誤
- 解決Python出現_warn_unsafe_extraction問題的方法
相關文章
編寫Python腳本批量下載DesktopNexus壁紙的教程
這篇文章主要介紹了編寫Python腳本批量下載DesktopNexus壁紙的教程,相較于普通的爬蟲抓取,本文的下載壁紙教程還包括了設置所要下載的分辨率等功能的實現,需要的朋友可以參考下2015-05-05

