python调用c++类_C++ Python导入类;调用方法

这里有一个C语言的快速n’dirty示例,它相当于。。。>>> import mymath

>>> m = mymath.math()

>>> print '1 + 2 = %d' % m.add(1, 2)

注意,我已经将模块从test重命名为mymath,因为标准Python库中有一个名为test的模块。#include

#include

#include

#include

int main()

{

setenv("PYTHONPATH", ".", 1);

Py_Initialize();

PyObject* module = PyImport_ImportModule("mymath");

assert(module != NULL);

PyObject* klass = PyObject_GetAttrString(module, "math");

assert(klass != NULL);

PyObject* instance = PyInstance_New(klass, NULL, NULL);

assert(instance != NULL);

PyObject* result = PyObject_CallMethod(instance, "add", "(ii)", 1, 2);

assert(result != NULL);

printf("1 + 2 = %ld\n", PyInt_AsLong(result));

Py_Finalize();

return 0;

}

…哪个输出。。。$ gcc foo.c -lpython2.7 && ./a.out

1 + 2 = 3

但是,如果在Py_Initialize和Py_Finalize之间使用Python/C API做了大量的工作,则必须监视引用计数,并在适当时使用Py_INCREF和Py_DECREF。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值