well I manage to figure it out myself. I'm using Bloodshed Dev-cpp
Here's the code:


#include "python.h"
#include <stdio.h>

int main(int argc, char* argv[])
{
        double answer = 0;
        PyObject *modname, *mod, *mdict, *func, *stringarg, *args, *rslt;

        Py_Initialize();
    modname = PyString_FromString("Test");
    mod = PyImport_Import(modname);
        if (mod)
        {
                mdict = PyModule_GetDict(mod);
                func = PyDict_GetItemString(mdict, "doit"); /* borrowed 
reference */
                if (func)
                {
                        if (PyCallable_Check(func))
                        {
                                stringarg = PyString_FromString("5");/*pay 
attention here*/
                                args = PyTuple_New(1);
                                PyTuple_SetItem(args, 0, stringarg);
                                rslt = PyObject_CallObject(func, args);
                                if (rslt)
                                {
                                        answer = PyFloat_AsDouble(rslt);
                                        Py_XDECREF(rslt);
                                }
              Py_XDECREF(stringarg);
              Py_XDECREF(args);
                        }
                }

                Py_XDECREF(mod);
        }

        Py_XDECREF(modname);

        Py_Finalize();

        printf("%g",answer);

        return 0;
}

I need to add include and lib directories to the project in order to
everything works fine. Also Test.py  is copied in Dev-cpp source code's
folder.
Test file contains the following code

def doit(x1):
    try:
        x2 = eval(x1)
    except:
        print 'Error!'
        return 0

    else:
        return x2




However there is an error. Look at the line stringarg =
PyString_FromString("5"); If I put this:
stringarg = PyString_FromString("5+2"); or even this stringarg =
PyString_FromString("5.0");
Program crashes at line Py_Finalize(). Program tries to read some
memory location and suffer run time exception.
Only suggestion is to try to send it to Microsoft.
Why is this happening?
Everything (seems to) works fine I comment line Py_Finalize(), but I
know that this is not a real solution.

Does anybode have a clue what is happening?

Thanks

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

Reply via email to