繁体   English   中英

如何用C ++扩展Python?

[英]How to extend Python with C++?

我有执行以下操作的Python代码:

  1. 从仿真软件获取优化问题。

  2. 使用多线程IPOPT算法解决此优化问题。

  3. 将2中获得的结果转换为另一个维度。

  4. 以图形形式显示结果。

现在,我已经用C ++写了一个类来解决优化问题(第2点)以提高速度,并且出于某些其他原因,它从第1点接收输出(问题,约束等),并给出进一步传递给该输出的输出。第3点(Python中的函数)。

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

我使用SWIG来生成包装文件。 SWIG为2.cpp2.h C ++文件创建包装的接口文件:

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

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

您如何精确地传递变量显然取决于您如何存储数据。 不过,我们假设t2c_main模块包含方法addDataPoint(int,int);

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

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

您现在应该可以执行类似的操作

t2c.addDataPoint(5,10)

在您的python代码中。

暂无
暂无

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

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