diff options
author | Guido van Rossum <guido@python.org> | 1996-09-06 21:16:21 (GMT) |
---|---|---|
committer | Guido van Rossum <guido@python.org> | 1996-09-06 21:16:21 (GMT) |
commit | 026f01a29751e7bd91b0f62b54beb5b9eb24e73f (patch) | |
tree | 81ce08172da7c7ce4bf500602a04db9335661564 /PC/example_nt/readme.txt | |
parent | 5c1d1ee8a8a77cfb6f7226a5d0123244ddfd84a3 (diff) | |
download | cpython-026f01a29751e7bd91b0f62b54beb5b9eb24e73f.zip cpython-026f01a29751e7bd91b0f62b54beb5b9eb24e73f.tar.gz cpython-026f01a29751e7bd91b0f62b54beb5b9eb24e73f.tar.bz2 |
A directory with a working example of how to build an extension.
Diffstat (limited to 'PC/example_nt/readme.txt')
-rw-r--r-- | PC/example_nt/readme.txt | 109 |
1 files changed, 109 insertions, 0 deletions
diff --git a/PC/example_nt/readme.txt b/PC/example_nt/readme.txt new file mode 100644 index 0000000..9189c4d --- /dev/null +++ b/PC/example_nt/readme.txt @@ -0,0 +1,109 @@ +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 only been tested with version +4.0, but should work with higher versions. + +The "example" 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 python14.lib file is referred +to as "..\vc40\python14.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\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\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 these +changes. 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 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\python14.lib and insert it into the project. |