我使用MFC使用C++ DLL,我想用Python调用它。
此dll在.h文件中包含此头
LONG CommOpen(BYTE port, LONG baud_rate);
然后我在自由软件dllexp中看到我的函数被调用了?CommOpen@CFIPcmd@QAEJEJ@Z在二进制文件中,这样在python中执行时不会报告错误
^{pr2}$
直到它看起来有效,但我想调用Python中的等价于C++的
Long l= CommOpen(5 ,115200);
但我不知道该怎么做。
任何帮助都将非常感谢!!在
Tags:
根据http://docs.python.org/2/library/ctypes.html#calling-functions“你可以像任何其他Python可调用的那样调用这些函数。”我建议运行一个交互式Python控制台(如ipython)并亲自检查。在
好吧,我刚刚将python安装到VirtualBox Win32中并检查了示例:
所以,是的,您可以像python环境中的任何其他函数一样调用这些函数对象。正如文件所说:)
同样地,ucputws也可以:
^{pr2}$根据问题中提供的信息,解决方案是:
现在它准备好呼叫:
^{pr2}$注意事项:
CDLL
而不是WinDLL
,因为函数使用了默认的cdecl
调用约定。在getattr
可以指定损坏的名称。在argtypes
和restype
总是值得的。在然而,它表明你有一个更大的问题。以上是基于您的函数是一个非成员函数而编写的。这是一个合理的假设,因为
ctypes
要求函数要么是非成员,要么是静态的。在但是,当我将托管函数名放入demanger(例如http://pear.warosu.org/c++filtjs/)时,似乎该函数实际上是:
这是C++对象的成员函数。无法从
ctypes
访问。您需要创建一个纯C风格的包装器,或者找到一个不同的互操作方法。在相关问题 更多 >
编程相关推荐