I have this error message poping up when I try to import a module I made in C using the Python/C API. Everything compiles like a charm.
Gives me this error message : Traceback (most recent call last): File "mod_test.py", line 4, in ? import utm ImportError: dynamic module does not define init function (initutm) but the "initutm" function is there. Running on Fedora Core 3. Thanx David P.S Other question is there a command to know what export symbols a .so library has ? Relevant files below. utmmodule.c ------------------ #include <Python.h> #include "utm.h" PyMODINIT_FUNC initutm(void); static PyObject * utm_utm_to_ll(PyObject * self, PyObject * args); static PyObject * utm_ll_to_utm(PyObject * self, PyObject * args); static PyObject * utm_zone(PyObject * self, PyObject * args); static PyObject * utm_grid(PyObject * self, PyObject * args); static PyObject * utm_trans_list(PyObject * self, PyObject * args); static PyObject * utm_transform(PyObject * self, PyObject * args); /****************************************/ /*! \var static PyObject * UTMError \brief UTM Python Module error handling object */ /****************************************/ static PyObject * UTMError; /****************************************/ /*! \var static PyMethodDef UTMMethods \brief UTM Python Module function list */ /****************************************/ static PyMethodDef UTMMethods[] = { {"utm_to_ll", utm_utm_to_ll, METH_VARARGS, "Converts UTM coordinates to Lat/Long using the input UTM zone number and letter and tranformation."}, {"ll_to_utm", utm_ll_to_utm, METH_VARARGS, "Converts Lat/Long coordinates to UTM using the input transformation."}, {"zone", utm_zone, METH_VARARGS, "Returns the UTM longitude zone number."}, {"grid", utm_grid, METH_VARARGS, "Returns the UTM latitude zone letter (C to X) - omiting chars I and O.\nReturns Z if Latitude value out of UTM bounds 84N - 80S."}, {"trans_list", utm_trans_list, METH_VARARGS, "Returns the list of available ellipsoid transformations in a list."}, {"transform", utm_transform, METH_VARARGS, "Returns the tranform index based on the transform type string, EX: 'WGS 84' returns index 29"}, {NULL, NULL, 0, NULL} /* Sentinel */ }; /****************************************/ /*! \fn PyMODINIT_FUNC initutm(void) \brief Python Module __init__() function This function is called when the module is loaded by Python. It creates a mapping of the python module commands linked to their C counterpart in the DLL/SO module. It also creates an error handling Python object (UTMError). */ /****************************************/ PyMODINIT_FUNC initutm(void) { PyObject *m; m = Py_InitModule( "utm", UTMMethods ); UTMError = PyErr_NewException( "utm.error", NULL, NULL ); Py_INCREF( UTMError ); PyModule_AddObject( m, "error", UTMError ); } .... ------------------ makefile important lines ------------------- CC=g++ CFLAGS=-Wall -I/usr/local/src/Python-2.3.5/Include -L/usr/local/src/Python-2.3.5/Objects -L/usr/local/src/Python-2.3.5 LDFLAGS= all: main main: utm.o utmmodule.o $(CC) $(CFLAGS) -shared -fPIC -Xlinker -export-dynamic -lpython2.3 -o utm.so ------------------- -- http://mail.python.org/mailman/listinfo/python-list