Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/128.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何自动执行C++代码块(最好是从Python)_Python_C++_Gdb_Pybind11_Libclang - Fatal编程技术网

如何自动执行C++代码块(最好是从Python)

如何自动执行C++代码块(最好是从Python),python,c++,gdb,pybind11,libclang,Python,C++,Gdb,Pybind11,Libclang,我有~10k独立且相对简单的.cpp文件,让我们假设只有一个30行的主函数。我想了解它们是如何通过cin获得许多不同的输入集来运行的。特别是,我要执行以下步骤数千次: 选择一个文件 给它一组输入 在.cpp文件中选择一段行 获取哪些变量已更改,以及从哪些值更改为哪些值。 或者,选择一行并获取每个声明变量的所有值对我来说也足够了 我试图用Python编写代码,但我也对其他语言持开放态度。查看相关的问题和通用的Google,我已经进入了LILCLAN,但看起来主要是在编译时查看抽象语法树,GDB可能

我有~10k独立且相对简单的.cpp文件,让我们假设只有一个30行的主函数。我想了解它们是如何通过cin获得许多不同的输入集来运行的。特别是,我要执行以下步骤数千次:

选择一个文件 给它一组输入 在.cpp文件中选择一段行 获取哪些变量已更改,以及从哪些值更改为哪些值。 或者,选择一行并获取每个声明变量的所有值对我来说也足够了

我试图用Python编写代码,但我也对其他语言持开放态度。查看相关的问题和通用的Google,我已经进入了LILCLAN,但看起来主要是在编译时查看抽象语法树,GDB可能符合账单,但不确切地知道如何,PyBDun11似乎主要是针对一次一个C++包的整合而不是逐行运行。 对于多个备选方案,在运行分析时,我更关心代码的易用性,而不是计算效率


您将如何完成此任务?

您应该查看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,反之亦然