Найти - Пользователи
Полная версия: Модуль на C (Си)
Начало » Python для экспертов » Модуль на C (Си)
1
hound
Добрый день, нашел статью где описывается создание модуля для пайтона на си:
http://blog2k.ru/archives/293#comment-3117

В общем, сделал как в статье, но когда импортирую полученный модуль самом пайтоне, то вываливается ошибка:
>>> import example
Traceback (most recent call last):
File “<stdin>”, line 1, in <module>
ImportError: /usr/local/lib/python3.4/dist-packages/example.cpython-34m.so: undefined symbol: PyString_FromString

Пробовал на версии пайтона 3.4.0(на убунте) и 3.2.3 (на дебиане)

Можете помочь?
o7412369815963
Можете попробовать этот пример, использовал его неделю назад на ubuntu 14.04 64bit + python 3.4
Только он без PyObject.
kamisama
Там api для 2-го. Нужно юникод создавать https://docs.python.org/3/c-api/unicode.html#creating-and-accessing-unicode-strings

hound
kamisama
Там api для 2-го. Нужно юникод создавать https://docs.python.org/3/c-api/unicode.html#creating-and-accessing-unicode-strings
Не много не понял…если не сложно можешь немного объяснить как подправить?
kamisama
#include <Python.h>
 
PyObject *hello( PyObject *self, PyObject *args, PyObject *kwargs)
{
    char *who;
    static char *keywords[] = {"who", NULL};
 
    if (!PyArg_ParseTupleAndKeywords(args, kwargs, "s", keywords, &who))
        return NULL;
    return PyUnicode_FromFormat("Hello, %s", who);
}
 
static PyMethodDef example_methods[] = 
{
    { "hello", (PyCFunction)hello, METH_VARARGS|METH_KEYWORDS, "hello(who) -- return \"Hello who\"" },
    { NULL, 0, 0, NULL }
};
static struct PyModuleDef example_module = {
   PyModuleDef_HEAD_INIT,
   "example",   /* name of module */
   NULL, /* module documentation, may be NULL */
   -1,       /* size of per-interpreter state of the module,
                or -1 if the module keeps state in global variables. */
   example_methods
};
 
PyMODINIT_FUNC
PyInit_example(void)
{
    return PyModule_Create(&example_module);
}
читай оф. документацию
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB