繁体   English   中英

使用 Python 测试 C++ 库

[英]Testing a C++ library with Python

我有一个从 C++ 代码(用 gcc 编译)构建的 libfoo.so 库,我想快速测试它的一些导出类(基本上,实例化一个 class 然后调用它的方法来检查输出)。

虽然我可以在 C/C++ 中使用链接到相关库并构建我的测试的主文件来执行此操作,但我认为如果可以简单地从命令行调用 Python 并调用来自那里。

我知道我可以使用 ctypes 中的 CDLL 来加载 C 风格的库,但是 C++ 库和对象是否有类似的功能?

编辑:理想情况下,我不想修改 C++ 代码,我需要按原样使用它。

老实说 C++ 有点乱。 You could do something like create a pure C function which wraps the C++ functionality (which you then call from python) but at that point you might as well write your tests in C++. 不幸的是,唯一的工具(据我所知)是 SWIG。

遗憾的是,它被称为“简化的”包装器和接口生成器,因为它一点也不简单。 如果您的签名中有非常原始的数据类型(例如,JUST ints 或者可能是 char*),这将是一项非常快速的工作。 否则你必须告诉 swig 如何在语言之间编组你的数据类型,这很快就会变得非常难看。 此外,很快你就会意识到你必须学习 CPython API 才能编写编组代码。

到那时,您不妨编写自己的 CPython 包装器,而不涉及 SWIG。 您突然意识到自己花了一个月的时间学习新的 API 并感到非常沮丧。 如果您要经常这样做,那绝对值得您花时间。 但是,如果这是一次性的,只需在 C / C++ 中编写测试。

(我是从这里的经验说的)

我同意克里斯的回答。 但是,我想指出Cython支持 C++(有一些限制)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM