Hi,
I am trying to use boost.python to wrap some classes in an
application, and have python embedded in my app and make some
instances from the application accessible thru simple script.
I got the impression that with boost python it should be quite simple
for basics, but I cannot have a simple code as bellow run:

1. If I uncomment the  //import("MyModule"); I get a runtime error -
and an application crash. And without it- I get an exception that the
C++ class CMyWrap is not associated with a python class.

2. If I just try to do a simpler thing like //exec("dir(__main__)",
main_namespace); I get "bad argument to an internal function" as an
exception.

I use python26_d.dll/ python26_d.lib and
libboost_python-vc90-mt-1_39.lib (boost 1.39 compiled as static lib).

Can you please help?
Can you refer me to any documentation that may help?
TIA,

Yuv.

class CMyWrap
{
public:
        string Greet()
        {
                return "I'm the dude!?";
        }
};

class CppClass {
public:
        int getNum() {
                return 7;
        }
};

BOOST_PYTHON_MODULE(MyModule)
{
        class_<CMyWrap>("CMyWrap")
                .def("greet", &CMyWrap::Greet);
}


int _tmain(int argc, TCHAR* argv[], TCHAR* envp[]) {
        int nRetCode = 0;
        CMyWrap myObj;
        try
        {
                PyImport_AppendInittab( "MyModule", &initMyModule);

                Py_Initialize();
                object main_module = import("__main__");

                object main_namespace = main_module.attr("__dict__");
                //import("MyModule");

                //exec("dir(__main__)", main_namespace);
                main_namespace["myObj"] = ptr(&myObj);

        }
        catch( error_already_set )
        {
                PyErr_Print();
        }
        
        Py_Finalize();

        return nRetCode;
}



--
Yuval Nahmany
cell. 054-2020665
_______________________________________________
Cplusplus-sig mailing list
Cplusplus-sig@python.org
http://mail.python.org/mailman/listinfo/cplusplus-sig

Reply via email to