我正在尝试使用pythonctypes库来访问在visualfoxpro中创建的COM DLL中的各种函数(从一个.prg文件)。在
以下是foxpro中的一个示例(从实际代码中简化)
DEFINE CLASS Testing AS CUSTOM OLEPUBLIC PROCEDURE INIT ON ERROR SET CONSOLE OFF SET NOTIFY OFF SET SAFETY OFF SET TALK OFF SET NOTIFY OFF ENDPROC FUNCTION get_input_out(input AS STRING) AS STRING output = input RETURN output ENDFUNC ENDDEFINE
在python中,我做的事情大致如下:
^{pr2}$dll注册良好并已加载,但当我尝试调用函数时,我只得到以下信息。在
AttributeError: function 'get_input_out' not found
我可以验证dll是否工作正常,因为我可以使用COM库通过php脚本访问函数。在
我真的很想在python中实现这个功能,但是到目前为止,我的尝试都是徒劳的,ctypes甚至可以用VFP工作吗?如有任何建议,将不胜感激。在
尝试从函数调用中删除括号。将
print link.get_input_out("someinput")
更改为print link.get_input_out "someinput"
。在对于使用OLEPUBLIC子句的vfpcom对象,应该使用pythonwin32扩展,而不是
ctypes
模块。pythonwin32扩展提供了一组功能齐全的组件,允许Python成为COM客户机,这正是您在本例中想要的。在您的代码应该如下所示:
如果您只想访问VFP表,Microsoft提供一个免费的ADO兼容组件
vfpoledb
,该组件可用于通过ADODB访问表,而该组件又可以通过Win32扩展中相同的Dispatch()
功能进行访问。在相关问题 更多 >
编程相关推荐