Hi everyone, I am attempting to convert some time critical code into C to be imported as a module into python. This is on OS X (10.3.9) using the bundled 2.3.3 version of python.
I am working through the extending python tutorial but am having trouble wrapping my head around some things which are a little above my knowledge of C and OS X. Full code is copied below. But, basically what I've done is created 2 source files, mod.c and sum.c with a header file sum.h (as per the tutorial). For compiling, I am doing the following: [code] [EMAIL PROTECTED] 14:03:21]$ gcc $PYTHPATH sum.c -o sum.o [/code] Where $PYTHPATH ='-I/System/Library/Frameworks/Python.framework/Versions/2.3/include/python2 .3' So gcc can find python.h sum.c compiles fine. The wrapper file mod.c, however gives me the following. [code] [EMAIL PROTECTED] 14:03:12]$ gcc $PYTHPATH mod.c -o mod.o ld: Undefined symbols: _main _PyArg_ParseTuple _Py_BuildValue _Py_InitModule4 _sum [/code] I was under the impression that I should compile the source files, and then compile a shared library by the following: [EMAIL PROTECTED] 14:03:14]$ gcc $PYTHPATH mod.o sum.o -o mod.so However, the compile is pooching out on the compile of mod.c I am hoping that someone with more experience with this may give me some tips regarding how to go about this. The code from the tutorial I have pasted below. Thanks. kjm // ------------------------------------------------------------ // begin sum.c #include "sum.h" int sum(int a, int b) { return a + b; } int main(int argc, char* argv[]) { return 0; } //---------------------------------------------------------- //----------------------------------------------------------- // being sum.h int sum(int a, int b); int main(int argc, char* argv[]); //----------------------------------------------------------- //----------------------------------------------------------- // being mod.c #undef _DEBUG #include <Python.h> #include "sum.h" static PyObject* mod_sum(PyObject *self, PyObject *args) { int a; int b; int s; if (!PyArg_ParseTuple(args,"ii",&a,&b)) return NULL; s = sum(a,b); return Py_BuildValue("i",s); } static PyMethodDef ModMethods[] = { {"sum", mod_sum, METH_VARARGS, "Description.."}, {NULL,NULL,0,NULL} }; PyMODINIT_FUNC initmod(void) { PyObject *m; m = Py_InitModule("mod",ModMethods); if (m == NULL) return; } _______________________________________________ Pythonmac-SIG maillist - Pythonmac-SIG@python.org http://mail.python.org/mailman/listinfo/pythonmac-sig