I need to interface with a windows DLL that has the following signature extern "C" void Foo( BSTR in, BSTR *out )
Code so far >>> from ctypes import * >>> import comtypes >>> LPBSTR = POINTER(comtypes.BSTR) >>> >>> hdl = windll.MyDll.Foo >>> hdl.rettype = None >>> hdl.argtypes = [comtypes.BSTR, LPBSTR] >>> >>> inStr = comtypes.BSTR(u'Some Silly String') >>> out = comtypes.BSTR >>> >>> hdl(inStr,byref(out)) Traceback (most recent call last): File "<pyshell#14>", line 1, in <module> hdl(inStr,byref(out)) TypeError: byref() argument must be a ctypes instance, not '_ctypes.SimpleType' Also tried the following >>> out = comtypes.BSTR(u'') >>> p = pointer(out) >>> hdl(inStr,p) Traceback (most recent call last): File "<pyshell#19>", line 1, in <module> hdl(inStr,p) ValueError: Procedure probably called with too many arguments (8 bytes in excess) Any feedback would be appreciated. -- http://mail.python.org/mailman/listinfo/python-list