使用C/C++扩展Python之二

在 Thu 26 November 2015 发布于 Python 分类 • 标签为 Python, C/C++, Python扩展

Python 引用计数 在上一篇文章中,简单的介绍了使用C/C++开发Python模块的一般步骤。还借用上一篇文中的代码:

static PyObject* py_reverse(PyObject* self, PyObject* args)
{
    char* result;
    char* target = NULL;
    PyObject* retval = NULL;

    int ret = PyArg_parseTuple(args, "s", &target);
    if (!ret) {
        return NULL;
    }   

    result = reverse(target);
    retval = (PyObject*)Py_BuildValue("s", result);
    return retval;
}

上篇文章说道,这只是一个很简陋的封装,还缺少错误处理和引用计数处理的逻辑。 Python …


阅读全文

使用C/C++扩展Python之一

在 Thu 12 November 2015 发布于 Python 分类 • 标签为 Python, C/C++, Python扩展

假设我们需要使用C/C++实现一个翻转字符串的扩展功能, 下面是C语言的实现

#include <stdio.h>
#include <stdlib.h>

char* reverse(char *s)
{
    if (NULL == s) {
        return NULL;
    }
    int low = 0;
    int higth = strlen(s) - 1;
    while (low < hight) {
        char tmp = s[low];
        s[low] = s[hight]
        s[hight] = tmp;
        ++low;
        --hight;
    }
    return s;
}

首先,我们需要解决的问题是,怎样在Python环境下传递参数,即在Python …


阅读全文