Upgrading Python Breaks Extensions; Fix proposal

Alex Martelli aleax at aleax.it
Fri Aug 31 06:35:27 EDT 2001


"Gordon McMillan" <gmcm at hypernet.com> wrote in message
news:Xns910DE5F425785gmcmhypernetcom at 199.171.54.194...
    ...
> The difference that is germain to this thread is that while
> you can export symbols from an exe, you don't get a lib.

When you link an EXE that exports symbols, you do normally
get a LIB file from it as well.  Try this simple test:

== file thexe.c:
#include <stdio.h>

__declspec(dllexport)
int main() {
    printf("Hello, EXE speaking\n");
    return 0;
}
== end of thexe.c

C:\TEMP\te>cl thexe.c
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 12.00.8168 for 80x86
Copyright (C) Microsoft Corp 1984-1998. All rights reserved.

thexe.c
Microsoft (R) Incremental Linker Version 6.00.8447
Copyright (C) Microsoft Corp 1992-1998. All rights reserved.

/out:thexe.exe
thexe.obj
   Creating library thexe.lib and object thexe.exp

The last line is a giveaway, of course, but anyway:

C:\TEMP\te>dir
 Volume in drive C is AMACN33ABZ
 Volume Serial Number is 0443-BAE0

 Directory of C:\TEMP\te

08/31/01  12:32p        <DIR>          .
08/31/01  12:32p        <DIR>          ..
08/31/01  12:32p                   117 thexe.c
08/31/01  12:32p                28,672 thexe.exe
08/31/01  12:32p                   524 thexe.exp
08/31/01  12:32p                 1,882 thexe.lib
08/31/01  12:32p                   473 thexe.obj
               7 File(s)         31,668 bytes
                            405,891,072 bytes free


> So to get to the symbols in the exe, you'd have to do it
> yourself, which means a typedef and a GetProcAddress for each
> symbol. Which makes the TCL stubs idea look very good.

I like the stubs idea!  Even though you DO get the .lib
from linking the .exe, I'd much rather not *rely* on it...

> There's a reason extension modules only need to export
> one symbol, you know.

Yep, but it's not that you don't get a lib when linking an
exe [which exports some symbols]:-).


Alex






More information about the Python-list mailing list