On Mon, Jun 22, 2009 at 09:52:35AM +0300, Jesse Lehrman wrote:
> It seems that most of the exports in the 32-bit version have a preceding 
> underscore while in the 64-bit version they don't. For example:
> 
> python25.lib 32-bit:
>                   _PyFloat_AsDouble
> 
> python25.lib 64-bit:
>                   PyFloat_AsDouble
> 
> Does anybody have an idea of why this is done and how I can get around it?

x86 has a whole slew of calling conventions, and in order to
disambiguate between them, symbols are decorated according to the
convention used [1].

In this case, a leading underscore means it's cdecl.

With x86_64, there's a new and shiny calling convention [2], replacing
all the old ones. As there's only one, there's no need to decorate that
one with anything in a symbol, thus the lack of _ in your 64-bit symbol.

This is all from a Windows perspective of course, as that's your
context.

As for getting things to do the right thing, I'm unsure.

[1] http://blogs.msdn.com/oldnewthing/archive/2004/01/08/48616.aspx
[2] http://blogs.msdn.com/freik/archive/2005/03/17/398200.aspx

-- 
Lars Viklund | z...@acc.umu.se | 070-310 47 07
_______________________________________________
Cplusplus-sig mailing list
Cplusplus-sig@python.org
http://mail.python.org/mailman/listinfo/cplusplus-sig

Reply via email to