[python-win32] what means "library not registered"?
Michael Bode
m.g.bode at web.de
Tue Dec 7 21:08:24 CET 2010
I'm trying to use a 3rd party COM dll for which I have only instructions
how to use it in VB. The instructions say I have to create a
cFM2Listener object, obtain an IFM2Listener interface from it, implement
my own version of a cFM2DeviceEvents object and assign that to the
DeviceEvents property of the cFM2Listener object.
I called makepy on the dll (FieldMax2DLLServer.dll) and got a
3B64E1EF-5DBC-4CCA-9C2A-F2D10C510050x0x2x0.py file.
Then I try to implement the cFM2DeviceEvents object which has to
implement the IFM2DeviceEvents interface.
import win32com.client
import win32com.server.util
from win32com import universal
class Notifier(object):
_public_methods_ = [ 'DisplayErrorToClient', 'NotifyData',
'NotifyDeviceStatus',
'DisplayZeroDeviceProgressToClient']
_public_attrs_ = [ 'CallbackEvent', 'CallbackMessage', 'DeviceIndex',
'SerialNumber', 'ZeroDeviceTimeoutCounter']
_com_interfaces_ = [ '_IFM2DeviceEvents' ]
_typelib_guid_ = '{3B64E1EF-5DBC-4CCA-9C2A-F2D10C510050}'
_typelib_version = 2, 0
def __init__(self):
self._CallbackEvent = ""
self._CallbackMessage = ""
self._DeviceIndex = 0
self._SerialNumber = ""
self._ZeroDeviceTimeoutCounter = 0
def DisplayErrorToClient(self): print "DisplayErrorToClient"
def NotifyData(self, CallbackData): print "NotifyData"
def NotifyDeviceStatus(self, CallbackData, DevicesList): print
"NotifyDeviceStatus"
def DisplayZeroDeviceProgressToClient(self): print
"DisplayZeroDeviceProgressToClient"
def get_CallbackEvent(self): return self._CallbackEvent
def set_CallbackEvent(self, value): self._CallbackEvent = value
CallbackEvent = property(get_CallbackEvent, set_CallbackEvent, doc =
"CallbackEvent property")
def get_DeviceIndex(self): return self._DeviceIndex
def set_DeviceIndex(self, value): self._DeviceIndex = value
DeviceIndex = property(get_DeviceIndex, set_DeviceIndex, doc =
"DeviceIndex property")
def get_SerialNumber(self): return self._SerialNumber
def set_SerialNumber(self, value): self._SerialNumber = value
SerialNumber = property(get_SerialNumber, set_SerialNumber, doc =
"SerialNumber property")
def set_ZeroDeviceTimeoutCounter(self, value):
self._ZeroDeviceTimeoutCounter = value
ZeroDeviceTimeoutCounter = property(fset =
set_ZeroDeviceTimeoutCounter, doc = "ZeroDeviceTimeoutCounter property")
win32com.client.gencache.EnsureModule('{3B64E1EF-5DBC-4CCA-9C2A-F2D10C510050}',
0, 2, 0)
print "gencache"
fml = win32com.client.Dispatch("FieldMax2DLLServer.cFM2Listener")
print fml
universal.RegisterInterfaces('{3B64E1EF-5DBC-4CCA-9C2A-F2D10C510050}',
0, 2, 0, ['_IFM2DeviceEvents'])
print "RegisterInterfaces"
NM = Notifier()
print NM
notifyMe = win32com.server.util.wrap(NM, useDispatcher=1)
And here I get the following error:
Traceback (most recent call last):
File "C:\myprogs\python\comtest\comtest.py", line 63, in <module>
notifyMe = win32com.server.util.wrap(NM, useDispatcher=1)
File "C:\Python27\lib\site-packages\win32com\server\util.py", line 25,
in wrap
ob = useDispatcher(usePolicy, ob)
File "C:\Python27\lib\site-packages\win32com\server\dispatcher.py",
line 203, in __init__
DispatcherTrace.__init__(self, policyClass, object)
File "C:\Python27\lib\site-packages\win32com\server\dispatcher.py",
line 24, in __init__
self.policy = policyClass(object)
File "C:\Python27\lib\site-packages\win32com\server\policy.py", line
181, in __init__
self._wrap_(object)
File "C:\Python27\lib\site-packages\win32com\server\policy.py", line
466, in _wrap_
tlb_major, tlb_minor, interfaces)
File "C:\Python27\lib\site-packages\win32com\universal.py", line 21,
in RegisterInterfaces
tlb = pythoncom.LoadRegTypeLib(typelibGUID, major, minor, lcid)
com_error: (-2147319779, 'Bibliothek nicht registriert.', None, None)
The message in the last line translates to 'library not registered'.
I have a sample VB program which works fine, so I don't think this means
there is something wrong with the FieldMax2DLLServer.dll. But what am I
doing wrong here?
--
PGP fingerprint: A391 4109 F8D0 F67B C504 1EF6 0158 E3BB 3687 53CF
More information about the python-win32
mailing list