Extending/Embedding python
Rick Ratzel
rlratzel at enthought.com
Wed Sep 8 19:36:39 EDT 2004
Have you checked out elmer?
http://elmer.sourceforge.net
It generates the code needed to embed a Python module into a C
application. Hope that helps,
Rick.
"Alicia Haumann" <alicia.haumann at orthodyne.com> wrote in message news:<mailman.2744.1094082648.5135.python-list at python.org>...
> I accidentally sent this to webmaster at python.org, so this could be a
> duplicate if "webmaster" forwards it to this list. :{
>
> Hi, there.
>
> Thanks for any help that can be offered. I've been working with Python for
> a year or more now, but only doing simple extending in C/C++. I'm now
> attempting some embedding and several questions have come to mind.
>
> BTW - I'm running Windows 2000 with Python23 and VisualC++ developers
> studio.
>
> 1. (Not extending/embedding related at all) How can I pass in a load/bunch
> of defines so I can use them over and over again, instead of having to copy
> them in every *.py script. All my scripts use an "extension" dll that I
> wrote that require a lot of constants. I looked a lot at that PyMemberDef
> and Type stuff but didn't get it and don't know if that's the solution
> anyway.
>
> 2. A couple simple examples I've seen for initModule() are written
> differently. One only calls Py_InitModule("module", module_methods), but
> the other also calls PyImport_AddModule("module"). What is the difference?
> What does PyImport_AddModule() accomplish?
>
> 3. When embedding Python into my simple application, why can't I pass
> application parameters? PyRun_SimpleString seems to only take hard-coded
> values. Can/How can I get around this? My code looks like:
>
> if (!Py_IsInitialized())
> {
> Py_Initialize();
> }
> PyRun_SimpleString("import MyModule");
> PyRun_SimpleString("MyModule.init(1, 'c:\\diag\\dsp.ldr', 0x5555)");
> PyRun_SimpleString("MyModule.MemoryTest(1, 0, 1)");
> PyRun_SimpleString("MyModule.Shutdown()");
> Py_Finalize();
>
> But I'd like to pass application variables instead of the hard-coded 1, 0, 1
> and 0x5555, such as:
>
> int appInt = 0x5555;
> PyRun_SimpleString("MyModule.init(1, 'c:\\diag\\dsp.ldr', appInt)");
>
> I know I'm missing something fundamental here. Please advise.
>
> Also, is there a mailing list that I should join for this topic?
>
> Thank you!!!!!!
>
> Alicia.
More information about the Python-list
mailing list