如何自动执行C++代码块(最好是从Python)
我有~10k独立且相对简单的.cpp文件,让我们假设只有一个30行的主函数。我想了解它们是如何通过cin获得许多不同的输入集来运行的。特别是,我要执行以下步骤数千次: 选择一个文件 给它一组输入 在.cpp文件中选择一段行 获取哪些变量已更改,以及从哪些值更改为哪些值。 或者,选择一行并获取每个声明变量的所有值对我来说也足够了 我试图用Python编写代码,但我也对其他语言持开放态度。查看相关的问题和通用的Google,我已经进入了LILCLAN,但看起来主要是在编译时查看抽象语法树,GDB可能符合账单,但不确切地知道如何,PyBDun11似乎主要是针对一次一个C++包的整合而不是逐行运行。 对于多个备选方案,在运行分析时,我更关心代码的易用性,而不是计算效率如何自动执行C++代码块(最好是从Python),python,c++,gdb,pybind11,libclang,Python,C++,Gdb,Pybind11,Libclang,我有~10k独立且相对简单的.cpp文件,让我们假设只有一个30行的主函数。我想了解它们是如何通过cin获得许多不同的输入集来运行的。特别是,我要执行以下步骤数千次: 选择一个文件 给它一组输入 在.cpp文件中选择一段行 获取哪些变量已更改,以及从哪些值更改为哪些值。 或者,选择一行并获取每个声明变量的所有值对我来说也足够了 我试图用Python编写代码,但我也对其他语言持开放态度。查看相关的问题和通用的Google,我已经进入了LILCLAN,但看起来主要是在编译时查看抽象语法树,GDB可能
您将如何完成此任务?您应该查看python的ctypes库: <>你可以编译C++代码到一个共享对象*.so文件在Linux, 然后使用ctypes.LibraryLoader类使用ctypes库将其加载到python中
我过去做过这件事,我记得我需要一个小的C代码,它可以将Python和C++结合起来,因为你需要把Python使用的C数据类型转换成C++数据类型。 C glue文件将如下所示:
#include "myCppHeader.h" // includes prototype for C++ function myCppFunction
extern "C" {
int callThisFromPython(int intFromPythonCode)
{
return myCppFunction(intFromPythonCode);
}
}
在python端,您将使用ctypes库调用callThisFromPython函数。这个函数将调用C++函数MycppFrand并将结果返回到Python。
您还可以将结构从python传递到C,反之亦然