如何从 python 访问 C++ dll 中的函数,我只有一个包(一个头文件和一个 dll 文件)
Posted
技术标签:
【中文标题】如何从 python 访问 C++ dll 中的函数,我只有一个包(一个头文件和一个 dll 文件)【英文标题】:How to access functions in a C++ dll from python ,all I have is a package(a header file and a dll file) 【发布时间】:2014-04-21 03:40:35 【问题描述】:现在我手头有一个 C++(带类)二进制库(dll 文件)和一个头文件,没有库的源代码,那么如何从 python 访问 dll 中的函数?
【问题讨论】:
【参考方案1】:您可能对 Boost 感兴趣
Boost Python 库是一个用于连接 Python 和 C++。它允许您快速、无缝地公开 C++ 类 Python的函数和对象,反之亦然,不使用特殊的 工具——只是你的 C++ 编译器。它旨在包装 C++ 接口 非侵入式,因此您不必更改 C++ 代码 一切都是为了包装它,使 Boost.Python 成为公开的理想选择 Python 的第 3 方库。图书馆使用先进 元编程技术为用户简化了语法,因此 包装代码呈现出一种声明式接口的外观 定义语言(IDL)。 Read more
或痛饮
SWIG 是一种软件开发工具,用于连接以 C 和 C++ 具有多种高级编程语言。 SWIG 是 与不同类型的目标语言一起使用,包括常见的 Perl、php、Python、Tcl 和 Ruby 等脚本语言。 Read more.
编辑:回应 jsbeuno 的评论:AFAIK ctypes 不能与 C++ 原生交互,只能与 C 交互。
【讨论】:
ctypes 更适合这个用例。以上是关于如何从 python 访问 C++ dll 中的函数,我只有一个包(一个头文件和一个 dll 文件)的主要内容,如果未能解决你的问题,请参考以下文章
如何在 C++ 中从 dll(dll 中的构造函数)创建一些类?
WindowsError:异常:使用从 C++ 到 Python 的 ctypes 创建 DLL 时出现访问冲突或 Windows 错误 193