I'm trying to embed Python in a Windows exe, and extend it with some functions in the same program. So far I only add one function: <file.h> static PyObject* py_print( PyObject* self, PyObject* args ) { const char* msg; if( !PyArg_ParseTuple( args, "s", &msg ) ) return 0; EventLog::log( msg ); Py_INCREF( Py_None ); return Py_None; } static PyMethodDef StoneAgeMethods[] = { { "log", py_print, METH_VARARGS, "Print a message to the log" }, { 0, 0, 0, 0 } /* sentinel */ }; <file.cpp> int APIENTRY WinMain( HINSTANCE hInstance, HINSTANCE, LPSTR, int ) { EventLog::init( "con_dump.txt" ); Py_Initialize(); EventLog::log( "Python version '%s'", Py_GetVersion() ); PyObject* res0 = Py_InitModule( "stoneage", StoneAgeMethods ); res1 = PyRun_SimpleString( "stoneage.log( \"test\" )\n" ); // FAIL res2 = PyRun_SimpleString( "log( \"test\" )\n" ); // FAIL res3 = PyRun_SimpleString( "print \"test\"\n" ); // OK Py_Finalize(); } This compiles without problems, but when I run it I can't use the "log" function. Result res0 is a non-null object. As far as I can understand the "Extending and Embedding the Python Interpreter" doc, res1 should work but it doesn't! I'm a total newbie to Python, so any help appreciated :)
-- http://mail.python.org/mailman/listinfo/python-list