Написал простенький модуль-шаблон:
/* Test Python module for ncurses-interface. */
#include <Python.h>
#include <stdio.h> // printf
#include <string.h>
#include <curses.h>
#include <unistd.h>
#include <locale.h>
#define VAR(a) simplecurses_##a
WINDOW *window;
static PyObject *VAR(output)(PyObject *self, PyObject *args) {
const unsigned char *s;
int i;
PyArg_ParseTuple(args, "es", "UTF-8", &s);
setlocale(LC_ALL,"ru_RU.UTF-8");
window = initscr();
wprintw(window,(const char *)s);
waddwstr(window,L"Привет");
wrefresh(window);
sleep(1);
endwin();
return Py_None;
}
static PyMethodDef VAR(methods)[] = {
{"output", VAR(output), METH_VARARGS, "output()"},
{NULL, NULL}
};
DL_EXPORT()
int initsimplecurses () {
Py_InitModule("simplecurses", VAR(methods));
}
#!/usr/bin/python
# -*- coding: utf-8 -*-
import simplecurses as sc
sc.output(unicode("Тест","UTF-8"))
#!/bin/bash
NAME=simplecurses
gcc -fPIC -finput-charset=utf-8 -I/usr/include/python2.6 -I/usr/include/ncursesw -c -o $NAME.o $NAME.c
gcc -o $NAME.so $NAME.o -shared -lncursesw
Как собрать подобное же для Си++? Если просто заменить gcc на g++, выдается:
$ ./test.py
Traceback (most recent call last):
File "./test.py", line 4, in <module>
import simplecurses as sc
ImportError: dynamic module does not define init function (initsimplecurses)
Использовать SWIG, sip4?