mirror of
https://github.com/python/cpython.git
synced 2025-11-15 00:00:00 +00:00
#9086: correct wrong terminology about linking with pythonXY.dll.
This commit is contained in:
parent
531d76b096
commit
4985ff2e61
1 changed files with 11 additions and 11 deletions
|
|
@ -291,19 +291,17 @@ Embedding the Python interpreter in a Windows app can be summarized as follows:
|
||||||
1. Do _not_ build Python into your .exe file directly. On Windows, Python must
|
1. Do _not_ build Python into your .exe file directly. On Windows, Python must
|
||||||
be a DLL to handle importing modules that are themselves DLL's. (This is the
|
be a DLL to handle importing modules that are themselves DLL's. (This is the
|
||||||
first key undocumented fact.) Instead, link to :file:`python{NN}.dll`; it is
|
first key undocumented fact.) Instead, link to :file:`python{NN}.dll`; it is
|
||||||
typically installed in ``C:\Windows\System``. NN is the Python version, a
|
typically installed in ``C:\Windows\System``. *NN* is the Python version, a
|
||||||
number such as "23" for Python 2.3.
|
number such as "23" for Python 2.3.
|
||||||
|
|
||||||
You can link to Python statically or dynamically. Linking statically means
|
You can link to Python in two different ways. Load-time linking means
|
||||||
linking against :file:`python{NN}.lib`, while dynamically linking means
|
linking against :file:`python{NN}.lib`, while run-time linking means linking
|
||||||
linking against :file:`python{NN}.dll`. The drawback to dynamic linking is
|
against :file:`python{NN}.dll`. (General note: :file:`python{NN}.lib` is the
|
||||||
that your app won't run if :file:`python{NN}.dll` does not exist on your
|
so-called "import lib" corresponding to :file:`python.dll`. It merely
|
||||||
system. (General note: :file:`python{NN}.lib` is the so-called "import lib"
|
defines symbols for the linker.)
|
||||||
corresponding to :file:`python.dll`. It merely defines symbols for the
|
|
||||||
linker.)
|
|
||||||
|
|
||||||
Linking dynamically greatly simplifies link options; everything happens at
|
Run-time linking greatly simplifies link options; everything happens at run
|
||||||
run time. Your code must load :file:`python{NN}.dll` using the Windows
|
time. Your code must load :file:`python{NN}.dll` using the Windows
|
||||||
``LoadLibraryEx()`` routine. The code must also use access routines and data
|
``LoadLibraryEx()`` routine. The code must also use access routines and data
|
||||||
in :file:`python{NN}.dll` (that is, Python's C API's) using pointers obtained
|
in :file:`python{NN}.dll` (that is, Python's C API's) using pointers obtained
|
||||||
by the Windows ``GetProcAddress()`` routine. Macros can make using these
|
by the Windows ``GetProcAddress()`` routine. Macros can make using these
|
||||||
|
|
@ -312,6 +310,8 @@ Embedding the Python interpreter in a Windows app can be summarized as follows:
|
||||||
Borland note: convert :file:`python{NN}.lib` to OMF format using Coff2Omf.exe
|
Borland note: convert :file:`python{NN}.lib` to OMF format using Coff2Omf.exe
|
||||||
first.
|
first.
|
||||||
|
|
||||||
|
.. XXX what about static linking?
|
||||||
|
|
||||||
2. If you use SWIG, it is easy to create a Python "extension module" that will
|
2. If you use SWIG, it is easy to create a Python "extension module" that will
|
||||||
make the app's data and methods available to Python. SWIG will handle just
|
make the app's data and methods available to Python. SWIG will handle just
|
||||||
about all the grungy details for you. The result is C code that you link
|
about all the grungy details for you. The result is C code that you link
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue