mirror of https://github.com/python/cpython
Added CRLF for Notepad.
This commit is contained in:
parent
3cca24570e
commit
29168ce1ed
|
@ -1,116 +1,116 @@
|
|||
Example Python extension for Windows NT
|
||||
=======================================
|
||||
|
||||
This directory contains everything you need to build a Python
|
||||
extension module using Microsoft VC++ 4.x ("Developer Studio"), except
|
||||
for the Python distribution. It has been tested most recently with
|
||||
version 4.2.
|
||||
|
||||
The "example_nt" subdirectory should be an immediate subdirectory of
|
||||
the Python source directory -- a direct sibling of Include and PC, in
|
||||
particular, which are referenced as "..\Include" and "..\PC". In
|
||||
other words, it should *not* be used "as is". Copy or move it up one
|
||||
level or you will regret it! (This is done to keep all the PC
|
||||
specific files inside the PC subdirectory of the distribution, where
|
||||
they belong.)
|
||||
|
||||
It is also assumed that the build results of Python are in the
|
||||
directory ..\vc40. In particular, the python15.lib file is referred
|
||||
to as "..\vc40\python15.lib".
|
||||
|
||||
In order to use the example project from Developer Studio, use the
|
||||
"File->Open Workspace..." dialog (*not* the "File->Open..." dialog!).
|
||||
Change the pattern to "*.mak" and select the file "example.mak". Now
|
||||
choose "File->Save All" and the othe project files will be created.
|
||||
|
||||
In order to check that everything is set up right, try building:
|
||||
choose "Build->Build example.dll". This creates all intermediate and
|
||||
result files in a subdirectory which is called either Debug or Release
|
||||
depending on which configuration you have chosen (as distributed,
|
||||
Debug is selected as the default configuration).
|
||||
|
||||
Once the build has succeeded, test the resulting DLL. In a DOS
|
||||
command window, chdir to that directory. You should now be able to
|
||||
repeat the following session "(C>" is the DOS prompt, ">>>" is the
|
||||
Python prompt):
|
||||
|
||||
C> ..\..\vc40\python.exe
|
||||
>>> import example
|
||||
>>> example.foo()
|
||||
Hello, world
|
||||
>>>
|
||||
|
||||
|
||||
Creating the project
|
||||
--------------------
|
||||
|
||||
There are two ways to use this example to create a project for your
|
||||
own module. First, choose a name ("spam" is always a winner :-) and
|
||||
create a directory for it. Copy your C sources into it. Note that
|
||||
the module source file name does not necessarily have to match the
|
||||
module name, but the "init" function name should match the module name
|
||||
-- i.e. you can only import a module "spam" if its init function is
|
||||
called "initspam()", and it should call Py_InitModule with the string
|
||||
"spam" as its first argument. By convention, it lives in a file
|
||||
called "spam.c" or "spammodule.c". The output file should be called
|
||||
"spam.dll" or "spam.pyd" (the latter is supported to avoid confusion
|
||||
with a system library "spam.dll" to which your module could be a
|
||||
Python interface).
|
||||
|
||||
Now your options are:
|
||||
|
||||
1) Clone example.mak. Start by copying example_nt\example.mak to
|
||||
spam\spam.mak. Do a global edit on spam.mak, replacing all
|
||||
occurrences of the string "example" by "spam", and all occurrences of
|
||||
"DEP_CPP_EXAMP" by something like "DEP_CPP_SPAM". You can now use
|
||||
this makefile to create a project file by opening it as a workspace
|
||||
(you have to change the pattern to *.mak first).
|
||||
|
||||
2) Create a brand new project; instructions are below.
|
||||
|
||||
In both cases, copy example_nt\example.def to spam\spam.def, and edit
|
||||
spam\spam.def so its second line contains the string "initspam". If
|
||||
you created a new project yourself, add the file spam.def to the
|
||||
project now.
|
||||
|
||||
You are now all set to build your extension, unless it requires other
|
||||
external libraries, include files, etc. See Python's Extending and
|
||||
Embedding manual for instructions on how to write an extension.
|
||||
|
||||
|
||||
Creating a brand new project
|
||||
----------------------------
|
||||
|
||||
If you don't feel comfortable with editing Makefiles, you can create a
|
||||
brand new project from scratch easily.
|
||||
|
||||
Use the "File->New..." dialog to create a new Project Workspace.
|
||||
Select Dynamic-Link Library, enter the name ("spam"), and make sure
|
||||
the "Location" is set to the spam directory you have created (which
|
||||
should be a direct subdirectory of the Python build tree). Select
|
||||
Win32 as the platform (in my version, this is the only choice). Click
|
||||
"Create".
|
||||
|
||||
Now open the "Build->Settings..." dialog. (Impressive, isn't it? :-)
|
||||
You only need to change a few settings. Make sure you have both the
|
||||
Debug and the Release configuration selected when you make the first
|
||||
change. Select the "C/C++" tab. Choose the "Preprocessor" category
|
||||
in the popup menu at the top. Type the following text in the entry
|
||||
box labeled "Addditional include directories:"
|
||||
|
||||
..\Include,..\PC
|
||||
|
||||
You must also change the run-time library. This must be done
|
||||
separately for the Release and Debug configurations. Choose the "Code
|
||||
Generation" category in the C/C++ tab. In the box labeled "Use
|
||||
run-time library", choose "Multithreaded DLL" for the Release
|
||||
configuration, and "Debug Multithreaded DLL" for the Debug
|
||||
configuration. That's all.
|
||||
|
||||
You should now first create the file spam.def as instructed in the
|
||||
previous section.
|
||||
|
||||
Now chose the "Insert->Files into Project..." dialog. Set the pattern
|
||||
to *.* and select both spam.c and spam.def and click OK. (Inserting
|
||||
them one by one is fine too.) Using the same dialog, choose the file
|
||||
..\vc40\python15.lib and insert it into the project.
|
||||
Example Python extension for Windows NT
|
||||
=======================================
|
||||
|
||||
This directory contains everything you need to build a Python
|
||||
extension module using Microsoft VC++ 4.x ("Developer Studio"), except
|
||||
for the Python distribution. It has been tested most recently with
|
||||
version 4.2.
|
||||
|
||||
The "example_nt" subdirectory should be an immediate subdirectory of
|
||||
the Python source directory -- a direct sibling of Include and PC, in
|
||||
particular, which are referenced as "..\Include" and "..\PC". In
|
||||
other words, it should *not* be used "as is". Copy or move it up one
|
||||
level or you will regret it! (This is done to keep all the PC
|
||||
specific files inside the PC subdirectory of the distribution, where
|
||||
they belong.)
|
||||
|
||||
It is also assumed that the build results of Python are in the
|
||||
directory ..\vc40. In particular, the python15.lib file is referred
|
||||
to as "..\vc40\python15.lib".
|
||||
|
||||
In order to use the example project from Developer Studio, use the
|
||||
"File->Open Workspace..." dialog (*not* the "File->Open..." dialog!).
|
||||
Change the pattern to "*.mak" and select the file "example.mak". Now
|
||||
choose "File->Save All" and the othe project files will be created.
|
||||
|
||||
In order to check that everything is set up right, try building:
|
||||
choose "Build->Build example.dll". This creates all intermediate and
|
||||
result files in a subdirectory which is called either Debug or Release
|
||||
depending on which configuration you have chosen (as distributed,
|
||||
Debug is selected as the default configuration).
|
||||
|
||||
Once the build has succeeded, test the resulting DLL. In a DOS
|
||||
command window, chdir to that directory. You should now be able to
|
||||
repeat the following session "(C>" is the DOS prompt, ">>>" is the
|
||||
Python prompt):
|
||||
|
||||
C> ..\..\vc40\python.exe
|
||||
>>> import example
|
||||
>>> example.foo()
|
||||
Hello, world
|
||||
>>>
|
||||
|
||||
|
||||
Creating the project
|
||||
--------------------
|
||||
|
||||
There are two ways to use this example to create a project for your
|
||||
own module. First, choose a name ("spam" is always a winner :-) and
|
||||
create a directory for it. Copy your C sources into it. Note that
|
||||
the module source file name does not necessarily have to match the
|
||||
module name, but the "init" function name should match the module name
|
||||
-- i.e. you can only import a module "spam" if its init function is
|
||||
called "initspam()", and it should call Py_InitModule with the string
|
||||
"spam" as its first argument. By convention, it lives in a file
|
||||
called "spam.c" or "spammodule.c". The output file should be called
|
||||
"spam.dll" or "spam.pyd" (the latter is supported to avoid confusion
|
||||
with a system library "spam.dll" to which your module could be a
|
||||
Python interface).
|
||||
|
||||
Now your options are:
|
||||
|
||||
1) Clone example.mak. Start by copying example_nt\example.mak to
|
||||
spam\spam.mak. Do a global edit on spam.mak, replacing all
|
||||
occurrences of the string "example" by "spam", and all occurrences of
|
||||
"DEP_CPP_EXAMP" by something like "DEP_CPP_SPAM". You can now use
|
||||
this makefile to create a project file by opening it as a workspace
|
||||
(you have to change the pattern to *.mak first).
|
||||
|
||||
2) Create a brand new project; instructions are below.
|
||||
|
||||
In both cases, copy example_nt\example.def to spam\spam.def, and edit
|
||||
spam\spam.def so its second line contains the string "initspam". If
|
||||
you created a new project yourself, add the file spam.def to the
|
||||
project now.
|
||||
|
||||
You are now all set to build your extension, unless it requires other
|
||||
external libraries, include files, etc. See Python's Extending and
|
||||
Embedding manual for instructions on how to write an extension.
|
||||
|
||||
|
||||
Creating a brand new project
|
||||
----------------------------
|
||||
|
||||
If you don't feel comfortable with editing Makefiles, you can create a
|
||||
brand new project from scratch easily.
|
||||
|
||||
Use the "File->New..." dialog to create a new Project Workspace.
|
||||
Select Dynamic-Link Library, enter the name ("spam"), and make sure
|
||||
the "Location" is set to the spam directory you have created (which
|
||||
should be a direct subdirectory of the Python build tree). Select
|
||||
Win32 as the platform (in my version, this is the only choice). Click
|
||||
"Create".
|
||||
|
||||
Now open the "Build->Settings..." dialog. (Impressive, isn't it? :-)
|
||||
You only need to change a few settings. Make sure you have both the
|
||||
Debug and the Release configuration selected when you make the first
|
||||
change. Select the "C/C++" tab. Choose the "Preprocessor" category
|
||||
in the popup menu at the top. Type the following text in the entry
|
||||
box labeled "Addditional include directories:"
|
||||
|
||||
..\Include,..\PC
|
||||
|
||||
You must also change the run-time library. This must be done
|
||||
separately for the Release and Debug configurations. Choose the "Code
|
||||
Generation" category in the C/C++ tab. In the box labeled "Use
|
||||
run-time library", choose "Multithreaded DLL" for the Release
|
||||
configuration, and "Debug Multithreaded DLL" for the Debug
|
||||
configuration. That's all.
|
||||
|
||||
You should now first create the file spam.def as instructed in the
|
||||
previous section.
|
||||
|
||||
Now chose the "Insert->Files into Project..." dialog. Set the pattern
|
||||
to *.* and select both spam.c and spam.def and click OK. (Inserting
|
||||
them one by one is fine too.) Using the same dialog, choose the file
|
||||
..\vc40\python15.lib and insert it into the project.
|
||||
|
|
Loading…
Reference in New Issue