我在COM上注册了一个C#dll,我试图在使用comtypes的Python代码中使用,代码在我正在开发c#dll的机器上运行得非常好但在部署在不同的机器中时无法加载所有的必填文件。
这是我得到的错误
Traceback (most recent call last):
File "C:\Python27\Lib\site-packages\bellagio\DriverManager\audiotest\apx525\apx525_Wrapper.py", line 257, in <module>
c._Connect()
File "C:\Python27\Lib\site-packages\bellagio\DriverManager\audiotest\apx525\apx525_Wrapper.py", line 51, in _Connect
self.apx525 = CreateObject("APxWrapper.APxWrapper",None,None,apx.IAPxWrapper)
File "C:\Python27\lib\site-packages\comtypes\client\__init__.py", line 235, in CreateObject
obj = comtypes.CoCreateInstance(clsid, clsctx=clsctx, interface=interface)
File "C:\Python27\lib\site-packages\comtypes\__init__.py", line 1145, in CoCreateInstance
_ole32.CoCreateInstance(byref(clsid), punkouter, clsctx, byref(iid), byref(p))
File "_ctypes/callproc.c", line 936, in GetResult
WindowsError: [Error -2147024894] The system cannot find the file specified
和相应的python代码是
try:
from comtypes.client import CreateObject,GetModule, Constants, GetEvents
from comtypes import COMError
GetModule("P:\\Share\\Test\\TestBed\\Bellagio\\dll\\APxWrapper.tlb")
from comtypes.gen import APxWrapper as apx
except:
tblog.warnLog("Need to install comtypes package, AP driver not imported")
class IAPxWrapper_Impl(object):
def __init__(self):
self.apx525 = None
self.activeSignalPath = ''
self.activeMeasurement = ''
def _Connect(self):
self.apx525 = CreateObject("APxWrapper.APxWrapper",None,None,apx.IAPxWrapper)
self.apx525._GUIVisible = True;
return True
c = IAPxWrapper_Impl()
c._Connect()
请注意,该文件夹包含3个文件ApxWrapper.tlb .APxWrapper.dll和依赖项dll。 GetModule工作正常,pyton文件在comtypes.gen文件夹中生成 任何有关此高度赞赏的提示
桑杰
答案 0 :(得分:0)
问题在于机器中引用的.Net dll版本,Python不知何故没有提供完整的错误细节,我能够通过运行我编写的示例c#应用程序来实现它并且抛出了c#异常所有必要的信息。