解決辦法:
成都創(chuàng)新互聯(lián)公司長期為上千多家客戶提供的網(wǎng)站建設服務,團隊從業(yè)經(jīng)驗10年,關注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務;打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為靖西企業(yè)提供專業(yè)的網(wǎng)站設計制作、成都網(wǎng)站設計,靖西網(wǎng)站改版等技術(shù)服務。擁有十余年豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。
加載的時候要根據(jù)你將要調(diào)用的函數(shù)是符合什么調(diào)用約定的。 windll和cdll分別是WinDLL類和CDll類的對象。
stdcall調(diào)用約定:
Objdll = ctypes.windll.LoadLibrary("dllpath")
Objdll = ctypes.WinDLL("dllpath")
cdecl調(diào)用約定:
Objdll = ctypes.cdll.LoadLibrary("dllpath")
Objdll = ctypes.CDLL("dllpath")
調(diào)用后就可以使用dll中的函數(shù)
print Objdll.Add(1, 102)
Objdll = ctypes.cdll.LoadLibrary("D:\\dll\\PosterDetector.dll")
擴展資料:
python導入dll報錯展示:
使用python調(diào)用C++的dll報錯,錯誤如下:
Traceback (most recent call last):File "E:/work/proc/video_web/application.py", line 157, in module
Objdll = ctypes.cdll.LoadLibrary(os.path.join(APP_ROOT,"dll","PosterDetector.dll"))
File "d:\python27\Lib\ctypes\__init__.py", line 444, in LoadLibrary
return self._dlltype(name)
File "d:\python27\Lib\ctypes\__init__.py", line 366, in __init__
self._handle = _dlopen(self._name, mode)
WindowsError: [Error 126]
參考資料來源:python 調(diào)用dll 報錯?WindowsError: [Error 126]
1、首選運行工具 makepy.py。
2、這樣就可以查看 C# dll的 com導出的 py文件了。
Python編程makepy.py代碼如下:
#?-*-?coding:?mbcs?-*-
#?Created?by?makepy.py?version?0.5.00
#?By?python?version?2.5.4?(r254:67916,?Dec?23?2008,?15:10:54)?[MSC?v.1310?32?bit?(Intel)]
#?From?type?library?'XGSharpLib.tlb'
""""""
makepy_version?=?'0.5.00'
python_version?=?0x20504f0
import?win32com.client.CLSIDToClass,?pythoncom,?pywintypes
import?win32com.client.util
from?pywintypes?import?IID
from?win32com.client?import?Dispatch
#?The?following?3?lines?may?need?tweaking?for?the?particular?server
#?Candidates?are?pythoncom.Missing,?.Empty?and?.ArgNotFound
defaultNamedOptArg=pythoncom.Empty
defaultNamedNotOptArg=pythoncom.Empty
defaultUnnamedArg=pythoncom.Empty
CLSID?=?IID('{B38EF2FA-4639-40BC-B97C-7908CED04FF9}')
MajorVersion?=?1
MinorVersion?=?0
LibraryFlags?=?8
LCID?=?0x0
from?win32com.client?import?DispatchBaseClass
class?IComXGSharpLib(DispatchBaseClass):
CLSID?=?IID('{D1965A94-0271-4C48-8AF6-2A56E256808B}')
coclass_clsid?=?IID('{2302D874-18FE-4281-B329-9517F1BC8311}')
def?EncryptMd5(self,?orignPwd=defaultNamedNotOptArg):
#?Result?is?a?Unicode?object
return?self._oleobj_.InvokeTypes(2,?LCID,?1,?(8,?0),?((8,?1),),orignPwd
)
def?EncryptSHA1(self,?orignPwd=defaultNamedNotOptArg):
#?Result?is?a?Unicode?object
return?self._oleobj_.InvokeTypes(1,?LCID,?1,?(8,?0),?((8,?1),),orignPwd
)
_prop_map_get_?=?{
}
_prop_map_put_?=?{
}
class?_Object(DispatchBaseClass):
CLSID?=?IID('{65074F7F-63C0-304E-AF0A-D51741CB4A8D}')
coclass_clsid?=?IID('{2302D874-18FE-4281-B329-9517F1BC8311}')
def?Equals(self,?obj=defaultNamedNotOptArg):
return?self._oleobj_.InvokeTypes(1610743809,?LCID,?1,?(11,?0),?((12,?1),),obj
)
def?GetHashCode(self):
return?self._oleobj_.InvokeTypes(1610743810,?LCID,?1,?(3,?0),?(),)
#?Result?is?of?type?_Type
def?GetType(self):
ret?=?self._oleobj_.InvokeTypes(1610743811,?LCID,?1,?(13,?0),?(),)
if?ret?is?not?None:
#?See?if?this?IUnknown?is?really?an?IDispatch
try:
ret?=?ret.QueryInterface(pythoncom.IID_IDispatch)
except?pythoncom.error:
return?ret
ret?=?Dispatch(ret,?u'GetType',?'{BCA8B44D-AAD6-3A86-8AB7-03349F4F2DA2}')
return?ret
_prop_map_get_?=?{
"ToString":?(0,?2,?(8,?0),?(),?"ToString",?None),
}
_prop_map_put_?=?{
}
#?Default?property?for?this?class?is?'ToString'
def?__call__(self):
return?self._ApplyTypes_(*(0,?2,?(8,?0),?(),?"ToString",?None))
def?__unicode__(self,?*args):
try:
return?unicode(self.__call__(*args))
except?pythoncom.com_error:
return?repr(self)
def?__str__(self,?*args):
return?str(self.__unicode__(*args))
def?__int__(self,?*args):
return?int(self.__call__(*args))
from?win32com.client?import?CoClassBaseClass
#?This?CoClass?is?known?by?the?name?'XGSharpLib.Security'
class?Security(CoClassBaseClass):?#?A?CoClass
CLSID?=?IID('{2302D874-18FE-4281-B329-9517F1BC8311}')
coclass_sources?=?[
]
coclass_interfaces?=?[
IComXGSharpLib,
_Object,
]
default_interface?=?IComXGSharpLib
IComXGSharpLib_vtables_dispatch_?=?1
IComXGSharpLib_vtables_?=?[
((?u'EncryptSHA1'?,?u'orignPwd'?,?u'pRetVal'?,?),?1,?(1,?(),?[?(8,?1,?None,?None)?,?
(16392,?10,?None,?None)?,?],?1?,?1?,?4?,?0?,?28?,?(3,?0,?None,?None)?,?0?,?)),
((?u'EncryptMd5'?,?u'orignPwd'?,?u'pRetVal'?,?),?2,?(2,?(),?[?(8,?1,?None,?None)?,?
(16392,?10,?None,?None)?,?],?1?,?1?,?4?,?0?,?32?,?(3,?0,?None,?None)?,?0?,?)),
]
_Object_vtables_dispatch_?=?1
_Object_vtables_?=?[
((?u'ToString'?,?u'pRetVal'?,?),?0,?(0,?(),?[?(16392,?10,?None,?None)?,?],?1?,?2?,?4?,?0?,?28?,?(3,?0,?None,?None)?,?0?,?)),
((?u'Equals'?,?u'obj'?,?u'pRetVal'?,?),?1610743809,?(1610743809,?(),?[?(12,?1,?None,?None)?,?
(16395,?10,?None,?None)?,?],?1?,?1?,?4?,?0?,?32?,?(3,?0,?None,?None)?,?0?,?)),
((?u'GetHashCode'?,?u'pRetVal'?,?),?1610743810,?(1610743810,?(),?[?(16387,?10,?None,?None)?,?],?1?,?1?,?4?,?0?,?36?,?(3,?0,?None,?None)?,?0?,?)),
((?u'GetType'?,?u'pRetVal'?,?),?1610743811,?(1610743811,?(),?[?(16397,?10,?None,?"IID('{BCA8B44D-AAD6-3A86-8AB7-03349F4F2DA2}')")?,?],?1?,?1?,?4?,?0?,?40?,?(3,?0,?None,?None)?,?0?,?)),
]
RecordMap?=?{
}
CLSIDToClassMap?=?{
'{D1965A94-0271-4C48-8AF6-2A56E256808B}'?:?IComXGSharpLib,
'{2302D874-18FE-4281-B329-9517F1BC8311}'?:?Security,
'{65074F7F-63C0-304E-AF0A-D51741CB4A8D}'?:?_Object,
}
CLSIDToPackageMap?=?{}
win32com.client.CLSIDToClass.RegisterCLSIDsFromDict(?CLSIDToClassMap?)
VTablesToPackageMap?=?{}
VTablesToClassMap?=?{
'{D1965A94-0271-4C48-8AF6-2A56E256808B}'?:?'IComXGSharpLib',
'{65074F7F-63C0-304E-AF0A-D51741CB4A8D}'?:?'_Object',
}
NamesToIIDMap?=?{
'_Object'?:?'{65074F7F-63C0-304E-AF0A-D51741CB4A8D}',
'IComXGSharpLib'?:?'{D1965A94-0271-4C48-8AF6-2A56E256808B}',
}
3、舉例:Python調(diào)用C# dll中的 MD5加密方法。
可以的,python中一般有兩種方法調(diào)用DLL中的函數(shù)。1.直接使用函數(shù)名,函數(shù)名可以用dependencywalker等工具查看。(這個工具在vc或者vs的工具包中)[python]viewplaincopyimportctypesdll=CTYPES.CDLL("test.dll")res=test(3,4)2.使用Ordinal,Ordinal可以用dependencywalker等工具查看。[python]viewplaincopyimportctypesdll=CTYPES.CDLL("test.dll")res=dll[1](3,4)
文章題目:python調(diào)dll函數(shù),python3調(diào)用dll
瀏覽地址:http://sd-ha.com/article28/hooscp.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供標簽優(yōu)化、定制開發(fā)、網(wǎng)站制作、網(wǎng)站改版、小程序開發(fā)、軟件開發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)