Erik Bray <erik.m.b...@gmail.com> added the comment:

> What makes functions different from variables? Aren't they essentially just 
> pointers?

You're on the right track by noting a difference between functions and data 
variables.  I can tell you off the bat that when it comes to data imported from 
DLLs, non-functions are handled (somewhat by necessity) quite differently from 
functions.

That said, since you asked, I struggled to articulate *exactly* why this exact 
problem occurs on Cygwin (actually on Windows in general), so I thought about 
it for a while and wrote up an explanation in a blog post: 
http://iguananaut.net/blog/programming/windows-data-import.html

The TL;DR though is that limitations of how the runtime dynamic loader on 
Windows works are such that it's impossible to initialize static data with a 
pointer to some data in an external library.  The compiler knows this and 
prevents you from doing it.  The workaround is simple enough for most cases: 
Complete the initialization at runtime.  In the case of PyType_Type objects, 
PyType_Ready can set their base type at runtime just fine.

----------

_______________________________________
Python tracker <rep...@bugs.python.org>
<https://bugs.python.org/issue34211>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to