【问题标题】:Calling a C++ DLL in Python which returns an object reference在 Python 中调用返回对象引用的 C++ DLL
【发布时间】:2011-07-13 11:40:07
【问题描述】:

经过长时间的研究,我决定写一个问题。 我有一个 C++ DLL,它有一个导出函数:ObjectType* getInstance() 有了这个实例,函数返回,我可以访问所有其他公共函数。

我现在的问题是,我想在 Python 中使用这个东西。当我使用 ctypes 访问 getInstance 时,我只得到一个整数值而不是一个实例。 我尝试的下一件事是用 C++ 编写 Python 扩展。但这也没有成功。

任何想法。

非常感谢您的帮助。

最好的问候。

【问题讨论】:

  • 您是否查看过Boost.PythonSWIG 之类的内容?它们使 Python 与 c++ 的接口变得非常容易
  • C++ 类和 DLL 在我看来不能很好地混合。您通常最终会限制 DLL 的客户端使用与用于构建 DLL 的编译器相同的编译器。我会导出extern "C" 函数的扁平化界面。制作这些第一个参数是对象实例的非成员函数。

标签: c++ python dll ctypes


【解决方案1】:

据我所知,您不能直接从 Python 访问 C++ 类型。你 必须用一些(通常很多)C 或 C++ 代码来包装它:它不是 很难,但确实需要时间。见Extending and Embedding the Python Interpreter

【讨论】:

  • 感谢到目前为止的回复。我已经开始开发这样的扩展。现在在那里玩了几天。
猜你喜欢
  • 2015-10-26
  • 2021-07-28
  • 2018-09-16
  • 1970-01-01
  • 2015-12-17
  • 1970-01-01
  • 2011-02-06
  • 2013-02-01
  • 2016-07-29
相关资源
最近更新 更多