On Mon, Jul 2, 2012 at 11:34 PM, Nathaniel Smith <n...@pobox.com> wrote:
> > To be clear, this subthread started with the caveat *as far as our > "officially supported" platforms go* -- I'm not saying that we should > go around and remove all the NPY_NO_EXPORT macros tomorrow. > > However, the only reason they're actually needed is for supporting > platforms where you can't control symbol visibility from the linker, > and AFAICT we have no examples of such platforms to hand. I gave you one, mingw 3.x. Actually, reading a bit more around, it seems this is not specific to mingw, but all gcc < 4 (http://gcc.gnu.org/gcc-4.0/changes.html#visibility) > I don't have windows to test, but everyone else on the internet seems > to think mingw works the way I said, with __declspec and all... you > aren't thinking of cygwin, are you? (see e.g. > http://mingw.org/wiki/sampleDLL) Well, I did check myself, but looking more into it, I was tricked by nm output, which makes little sense on windows w.r.t. visibility with dll. You can define the same function in multiple dll, they will all appear as a public symbol (T label with nm), but the windows linker will not see them when linking for an executable. I am still biased toward the conservative option, especially that it is still followed by pretty much every C extension out there (including python itself). I trust their experience in dealing with cross platform more than ours. I cannot find my patch for detecting platforms where this can safely become the default, I will reprepare one. David _______________________________________________ NumPy-Discussion mailing list NumPy-Discussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion