Nat Goodspeed wrote:

I guess
what the problem is should be that: another python extension, written in boost python, cannot access the types and functions exposed in my current extension. I am not clear why is it so, becaused it is exposed to the python interpreter already. If there are two python extensions, both written in pure C, can't they access each other's type and
functions?

Suppose you develop two different Python extensions, each statically
linked with Boost.Python. The situation looks like this:

            Ext1 | Boost.Python
           /
Python
interpreter
           \
            Ext2 | Boost.Python

You have two different copies of Boost.Python in memory at the same
time. Presumably Boost.Python contains certain static data used to
manage registering types to the Python interpreter. I guess the
documentation is saying that if Ext2 tries to reference types defined in
Ext1, it might confuse Boost.Python's static data.

Contrast with dynamic linking:

            Ext1
           /    \
Python           Boost.Python
interpreter      /
           \    /
            Ext2

Having a single copy of the Boost.Python static data eliminates the
potential for confusion.


Thanks for the explantion. I think I understand better now. So I think as long
as I don't need to share this static registation information between two
boost python modules (in a sense, that these modules are self-contained and
just use python types), it is ok to use static boost python lib.


_______________________________________________
Cplusplus-sig mailing list
Cplusplus-sig@python.org
http://mail.python.org/mailman/listinfo/cplusplus-sig

Reply via email to