problem in compiling C API in mingw

L

llwaeva

Hi all again,
I wonder if so far only Python 2.5.x support c extension. I try the
MSVC 2010 and 2008, also try mingw (gcc 4.x.x) and swig. But even I try
the simplest example, it said

example_wrap.o:example_wrap.c:(.text+0x10ac): undefined reference to `_imp__PyObject_Free'
example_wrap.o:example_wrap.c:(.text+0x10f5): undefined reference to `_imp__PyCapsule_Import'
example_wrap.o:example_wrap.c:(.text+0x1100): undefined reference to `_imp__PyErr_Occurred'
example_wrap.o:example_wrap.c:(.text+0x110e): undefined reference to `_imp__PyErr_Clear'
example_wrap.o:example_wrap.c:(.text+0x1125): undefined reference to `_imp__PyImport_AddModule'
example_wrap.o:example_wrap.c:(.text+0x1144): undefined reference to `_imp__PyCapsule_New'
example_wrap.o:example_wrap.c:(.text+0x1165): undefined reference to `_imp__PyModule_AddObject'
example_wrap.o:example_wrap.c:(.text+0x1170): undefined reference to `_imp__PyBaseObject_Type'
example_wrap.o:example_wrap.c:(.text+0x11b2): undefined reference to `_imp__PyObject_SetAttr'
example_wrap.o:example_wrap.c:(.rdata+0x1e8): undefined reference to `PyObject_GenericGetAttr'
collect2: ld returned 1 exit status

and some sort like that.

So I try to use the compiler itself and get rid of all 3rd part tool,
here is what I did

///////////// source code
#include "Python.h"

static PyObject *
ex_foo(PyObject *self, PyObject *args)
{
printf("Hello, world n " );
Py_INCREF(Py_None);
return Py_None;
}

static PyMethodDef example_methods[] = {
{"foo" , ex_foo, METH_VARARGS, "foo() doc string" },
{NULL , NULL }
};

static struct PyModuleDef examplemodule = {
PyModuleDef_HEAD_INIT,
"example" ,
"example module doc string" ,
-1 ,
example_methods,
NULL ,
NULL ,
NULL ,
NULL
};

PyMODINIT_FUNC
PyInit_example(void )
{
return PyModule_Create(&examplemodule);
}

/// my setup.py
from distutils.core import setup, Extension

module1 = Extension('example', sources = ['example.c'])

setup (name = 'example', version = '1.0', description = 'This is a demo package', ext_modules = [module1])


// running
python setup.py build --compiler=mingw32


$ python setup.py build --compiler=mingw32
running build
running build_ext
building 'example' extension
D:\Programs\MinGW\bin\gcc.exe -mno-cygwin -mdll -O -Wall "-Ic:\Program Files (x8
6)\Python\include" "-Ic:\Program Files (x86)\Python\PC" -c example.c -o build\te
mp.win-amd64-3.1\Release\example.o
writing build\temp.win-amd64-3.1\Release\example.def
D:\Programs\MinGW\bin\gcc.exe -mno-cygwin -shared -s build\temp.win-amd64-3.1\Re
lease\example.o build\temp.win-amd64-3.1\Release\example.def "-Lc:\Program Files
(x86)\Python\libs" "-Lc:\Program Files (x86)\Python\PCbuild\amd64" -lpython31 -
lmsvcr90 -o build\lib.win-amd64-3.1\example.pyd
build\temp.win-amd64-3.1\Release\example.o:example.c:(.text+0x13): undefined ref
erence to `_imp___Py_NoneStruct'
build\temp.win-amd64-3.1\Release\example.o:example.c:(.text+0x32): undefined ref
erence to `_imp__PyModule_Create2'
collect2: ld returned 1 exit status
error: command 'gcc' failed with exit status 1
--------------------- Original Message Ends --------------------
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,769
Messages
2,569,582
Members
45,065
Latest member
OrderGreenAcreCBD

Latest Threads

Top