Python C APiで拡張 on windows

cソースはmingw使ってビルド。

#include <Python.h>

/* モジュールの関数 */
static PyObject *hello(PyObject* self, PyObject *args)
{
	printf("Hello World!!\n");
	Py_RETURN_NONE;
}

/* モジュールのメソッドテーブル */
static PyMethodDef methods[] = {
	{"hello", (PyCFunction)hello, METH_VARARGS, "print hello world.\n"},
	{NULL, NULL, 0, NULL}
};

/* モジュールの初期化関数 */
PyMODINIT_FUNC initsample(void)
{
	(void)Py_InitModule("sample", methods);
}

ビルドコマンド

gcc -o ext_sample.o -c ext_sample.c -I"C:\python27\include"
gcc -shared ext_sample.o -o ext_sample.pyd -L"C:\python27\libs" -lpython27

注意点

  • initsample()だた、命名規則として「init<モジュール名>」とする必要がある。