Commit 9e8dd9e8 authored by Georg Brandl's avatar Georg Brandl

#9086: correct wrong terminology about linking with pythonXY.dll.

parent dab40629
...@@ -290,20 +290,18 @@ Embedding the Python interpreter in a Windows app can be summarized as follows: ...@@ -290,20 +290,18 @@ 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: ...@@ -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
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment