* Tim Roberts:
Dave Angel <da...@ieee.org> wrote:
There's no real reason parts of an exe cannot be exported, same as a
dll. They are in fact the same structure. And in fact many other files
in the Windows environment are also the same structure, from fonts to ocx's
This is a bit off-topic, but your explanation is incorrect in some key respects,
so (no offense) to avoid readers getting an incorrect impression:
Well, there IS a fundamental difference. EXEs and DLLs and the like do all
have the same format. They all have a "transfer address"
Commonly called an "entry point".
This is the term you need to know about when e.g. linking object files.
, where execution
begins. That's the key problem. With a DLL, the transfer address goes to
a DllMain, where certain DLL initialization is done, preparing the other
entry points for use.
Right, modulo terminology: there's only one "entry point" in a PE format file.
With an EXE, the transfer address goes to "main".
Sorry, no, the EXE entry point goes to a routine of no arguments.
Typically, in C and C++ that's a run time library routine (e.g. with Microsoft's
run time library mainCRTStartup or one of its cousins) which in turn calls the
C/C++ "main", while in Pascal it runs the main program, so on.
Note that the EXE entry point is probably still incorrectly documented as
requiring WinMain signature -- it's the most infamous Microsoft documentation
screw-up.
So, when you load an EXE as a DLL, you will be RUNNING the program.
Sorry, no, that's not what happens.
The Windows API LoadLibrary(Ex) knows the difference between an EXE and a DLL.
It's documented as handling both sub-formats, and it does.
That's is usually not what you want.
If that had happened then it would be a problem, yes. Happily it doesn't happen.
I've discussed the real problems else-thread.
Cheers & hth.,
- Alf
--
http://mail.python.org/mailman/listinfo/python-list