swig and python/C++ (embedded)
Dave Marotti
landshark at verticaladdiction.net
Sun Aug 25 21:17:07 EDT 2002
Hello,
I have 2 questions regarding embedding python into C++ with SWIG.
First some overview:
I wrote a small application as a test to see if I could successfully wrap a C++
class with SWIG, and then embed python into C++ and access my wrapped
functionality via PyRun_SimpleString() calls. It works, kind of.
The problem I'm having is that I cannot seem to directly call "SWIG_init()"
from my main() function to initialize the wrapped module.
I've tried creating prototypes and extern prototypes at the top of my main c++
file such as:
extern "C" void SWIG_init();
void SWIG_init();
But when I compile, I get an undefined reference to SWIG_init() (yes I'm
compiling the xxx_wrap.cxx file too.
So what I did is modify the xxx_wrap.cxx file and add this:
void duh() {
SWIG_init();
}
Then in my main file I added:
void duh();
and calling duh() works to initialize the wrapped module().
It's a hack, but it works.
Question 1.
Does anyone know how I can get around having to
modify the wrapped file? It's easy enough to incorporate this hack into the
Makefile for auto-generation, but I hate doing it, it feels wrong.
Question 2.
Now that I have this working, I want to call python functions from C++ that
expect the wrapped object as an argument.
Can anyone give some advice on how I can create a PyObject out of my real C++
object?
eg:
My wrapped class is called "Stack" (a LIFO).
say you have a function in python:
def someFunc(Stack s):
# do something here with s
I want to call this from C++, but I'm not sure how to go about constructing the
PyObject to pass to the function call.
Any ideas/pointers?
I appreciate any comments this, as it has me sorta stumped.
-dave
--
+-----------------------------+----------------------------------------------+
| Dave Marotti | Looking for a Visio alternative for *nix? |
| lndshark ! speakeasy net | Kivio : http://thekompany.com/projects/kivio |
+-----------------------------+----------------------------------------------+
| I just don't trust anything | Duct tape is like the force. It has a light |
| that bleeds for 5 days and | side and a dark side, and it holds the |
| doesn't die. - Mr. Garrison | universe together. - Carl Zwanzig |
+-----------------------------+----------------------------------------------+
More information about the Python-list
mailing list