Fre*_*red 3 c++ python shared-libraries
我有一个用C++代码构建的libfoo.so库(用gcc编译),我想快速测试一些导出的类(基本上,实例化一个类然后调用它的方法来检查输出).
虽然我可以在C/C++中使用链接到相关库的主文件来构建我的测试,但我认为如果可以从命令行简单地调用Python并从中调用方法,则会更容易那里.
我知道我可以使用ctypes中的CDLL来加载C风格的库,但是C++库和对象有类似的功能吗?
编辑:理想情况下,我不想修改C++代码,我需要按原样使用它.
老实说,C++有点乱.你可以做一些事情,比如创建一个包含C++功能的纯C函数(然后你可以从python中调用它),但此时你也可以用C++编写你的测试.不幸的是,这个(我知道)的唯一工具是SWIG.
令人遗憾的是,它被称为"简化"包装器和接口生成器,因为没有什么简单的.如果您的签名中有非常原始的数据类型(例如,JUST int或者char*),那将是一个非常快速的工作.否则你必须告诉swig如何在语言之间编组你的数据类型,这很快就会变得非常丑陋.此外,在短时间内您意识到您必须学习CPython API才能编写编组代码.
到那时,您可以编写自己的CPython包装器而不涉及SWIG.你突然意识到你花了一个月的时间学习一个新的API并感到非常沮丧.如果你要做很多事情,那绝对值得你花时间.但是,如果这是一次性的事情,那就用C/C++编写测试.
(我是根据这里的经验说的)