我有一个DLL,它是Pastel Partner会计系统的SDK。使用Dependency Walker我可以看到DLL有以下方法:DllRegisterServer,DllUnregisterServer,DllGetClassObject
在库中出现了一个示例VB程序,它引用了DLL并将其实例化为:
Dim SDK As New PasSDK.PastelPartnerSDK
我能从python中使用这个库的唯一方法是在Windows上注册它:
regsvr32 PasSDK.dll
然后在python中使用它:
import win32com.client
sdk = win32com.client.Dispatch("PasSDK.PastelPartnerSDK")
sdk.SetLicense(...)
etc...
但是,有没有办法直接使用这个库而不先注册它?类似的东西:
from ctypes import *
sdk = cdll.LoadLibrary('PasSDK.dll')
当我这样做时,我可以看到sdk.DllGetClassObject是一个函数,但是我如何像VB程序一样实例化它,是否可能?
答案 0 :(得分:0)
无论您使用何种语言,您都会发现同样的问题。也就是说,使用VB,您也必须注册该组件。
但是,您可以使用registration free COM来实现此目的。为EXE创建一个清单(例如python.exe或您的应用程序的EXE名称),该清单依赖于声明它提供的类,接口和/或类型库的清单。