[python-win32] Extension and local data on win32
Robert Olson
olson@mcs.anl.gov
Mon, 11 Nov 2002 14:20:40 -0600
Hi --
I'm trying to use a library as an extension under win32. Internal to the
library is a hierarchical typing system that uses as type identifiers the
address of a structure describing the class; somethign like
struct object_type
{
struct object_type *parent;
func_t initializer;
<etc>
}
const struct object_type tobj_struct = {
parent_obj, init_func
};
tobj_type = &tobj_struct;
Then later it tags objects using the tobj_type pointer.
The structure of the python interface is such that multiple extension
modules are created, each linking in the C library that has the type
structures. The problem is that when Windows loads the DLLs, it maps them
into different address spaces. The result is that when an object created by
calling one extension is passed through a method in another extension,
comparisons made on the object pointers fail.
I can't change the behavior of this library; does anyone have any ideas on
a solution? I've tried what MSDN howto Q109619 " Share All Data in a DLL"
suggests by adding ["-section:.data,rws", "-section:.bss,rws"] to the
extra_link_args keyword on the Extension in setup.py on all extensions
built; no change.
Also, marking the structure with __declspec(dllexport) didn't help.
Thank you for any advice.
--bob