Carsten Haese wrote:

python_code is a C string containing the raw bytes from your pyc file. Casting that to a PyObject pointer will not magically transform it into a Python code object.

<scratching my head> well yeah, I kind of didn't think that through..


A pyc file contains the following:

1) An 8 byte header containing a magic number.
2) A "marshal" serialization of the code object.

So, in order to transform those contents into a code object, you need to skip the 8 byte header and an unmarshal the rest. Basically, replace the line above with something like this:

        codeobj = PyMarshal_ReadObjectFromString(python_code+8, size-8);
        mainobj = PyImport_ExecCodeModule("multiply", codeobj);

where codeobj is of type (PyObject *).

Once that works, add magic number checking and exception handling to taste.


Thanks. That's exactly what I was looking for.

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to