相关疑难解决方法(0)

从C/C++调用python方法,并提取其返回值

我想调用一个在C语言的python模块中定义的自定义函数.我有一些初步代码可以做到这一点,但它只是将输出打印到stdout.

mytest.py

import math

def myabs(x):
    return math.fabs(x)
Run Code Online (Sandbox Code Playgroud)

TEST.CPP

#include <Python.h>

int main() {
    Py_Initialize();
    PyRun_SimpleString("import sys; sys.path.append('.')");
    PyRun_SimpleString("import mytest;");
    PyRun_SimpleString("print mytest.myabs(2.0)");
    Py_Finalize();

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

如何将返回值提取到C double并在C中使用它?

c c++ python python-embedding python-c-api

49
推荐指数
4
解决办法
6万
查看次数

Boost-python如何将c ++类实例传递给python类

我是新手来提升python.我必须首先在cpp代码中初始化一个cpp类实例,然后将这个cpp实例传递给python代码,使用python类实例来调用它(cpp实例).我已经尝试过Python/C API方法但是失败了,所以我想知道如何将c ++类实例传递给python类.

以下是我的代码,改进了boost python演示.

在main.cpp中

#include <python2.6/Python.h>
#include <boost/python.hpp>
#include <iostream>

using namespace boost::python;
using namespace std;

class World
{
private:
    string name;
public:
    void set(string name)
    {
        this->name = name;
    }
    void greet()
    {
        cout << "hello, I am " << name << endl;
    }
};

typedef boost::shared_ptr< World > world_ptr;

BOOST_PYTHON_MODULE(hello)
{
    class_<World>("World")
    .def("greet", &World::greet)
    .def("set", &World::set)
    ;

    register_ptr_to_python<world_ptr>();
};

int main()
{
    Py_Initialize();
    PyRun_SimpleString("import sys");
    PyRun_SimpleString("sys.path.append('./')");

    world_ptr worldObjectPtr (new World);
    worldObjectPtr->set("C++!");

    try
    {
        inithello();
        PyObject* pModule …
Run Code Online (Sandbox Code Playgroud)

c++ python boost-python

11
推荐指数
1
解决办法
5062
查看次数

在C ++中创建python对象并调用其方法

在以下有关python嵌入的文档中,很好地描述了如何在“ C”代码中嵌入python方法。 https://docs.python.org/2/extending/embedding.html

我测试了上面的代码,它也与g ++编译器一起很好地工作。

但是上面显示了调用全局方法而不是类方法的示例。

任何人都可以显示有关如何创建Python对象并从C ++调用其方法的示例吗?

c++ python

2
推荐指数
1
解决办法
2270
查看次数

标签 统计

c++ ×3

python ×3

boost-python ×1

c ×1

python-c-api ×1

python-embedding ×1