Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/359.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
Python 如何用C++;?_Python_C++_Wrapper_Swig - Fatal编程技术网

Python 如何用C++;?

Python 如何用C++;?,python,c++,wrapper,swig,Python,C++,Wrapper,Swig,我有Python代码,它可以执行以下操作: 从仿真软件中获取优化问题 使用多线程IPOPT算法解决此优化问题 将在2中获得的结果转换为另一个维度 以图形的形式显示结果 现在我已经编写了C++中的一个类来解决优化问题(点2),以提高速度和其他一些原因,它从点1(问题、约束等)中得到输出,并给出一个输出,它进一步传递到点3(Python中的函数)。 如何将这些变量从1中获得到2中的C++类,然后在3返回到Python函数?以下是我正在尝试的: 我使用SWIG来生成包装文件。SWIG接口文件,用于创建

我有Python代码,它可以执行以下操作:

  • 从仿真软件中获取优化问题

  • 使用多线程IPOPT算法解决此优化问题

  • 将在2中获得的结果转换为另一个维度

  • 以图形的形式显示结果

  • 现在我已经编写了C++中的一个类来解决优化问题(点2),以提高速度和其他一些原因,它从点1(问题、约束等)中得到输出,并给出一个输出,它进一步传递到点3(Python中的函数)。

    如何将这些变量从1中获得到2中的C++类,然后在3返回到Python函数?以下是我正在尝试的:

    我使用SWIG来生成包装文件。SWIG接口文件,用于创建< <代码> 2、CPP 和<代码> 2。h < /C> C++文件:

    /* File: 2.i */
    %module t2c_main
    %{
    #define SWIG_FILE_WITH_INIT
    #include "../include/2.h"
    %}
    %include ../include/2.h
    

    在运行SWIG之后,我得到了一个Python文件和一个cxx文件。现在我在使用这些文件时遇到了问题;如上所述,我需要传递变量。

    传递变量的准确程度显然取决于数据的存储方式。让我们假设t2c_主模块包含一个addDataPoint方法(int,int)

    然后,您将执行以下操作:

    • 将生成的cpp文件与2.cpp一起编译并链接到动态库中
    • 如果生成的python文件名为t2c.py,请将刚刚编译的动态库重命名为_t2c.pyd(注意下划线,这实际上很重要)
    • 在python代码中导入t2c模块
    您现在应该能够执行以下操作

    t2c.addDataPoint(5,10)
    

    在您的python代码中。

    感谢您的支持和帮助。