Update example to VC 7.1. Will backport to 2.4.
diff --git a/PC/example_nt/example.dsp b/PC/example_nt/example.dsp
deleted file mode 100644
index 19d4bb0..0000000
--- a/PC/example_nt/example.dsp
+++ /dev/null
@@ -1,117 +0,0 @@
-# Microsoft Developer Studio Project File - Name="example" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
-
-CFG=example - Win32 Release
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "example.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "example.mak" CFG="example - Win32 Release"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "example - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE "example - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-MTL=midl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "example - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir ".\Release"
-# PROP BASE Intermediate_Dir ".\Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir ".\Release"
-# PROP Intermediate_Dir ".\Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\Include" /I "..\PC" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
-# ADD BASE MTL /nologo /D "NDEBUG" /win32
-# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib python24.lib /nologo /subsystem:windows /dll /machine:I386 /libpath:"..\PCbuild" /export:initexample
-# SUBTRACT LINK32 /pdb:none
-
-!ELSEIF "$(CFG)" == "example - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir ".\Debug"
-# PROP BASE Intermediate_Dir ".\Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir ".\Debug"
-# PROP Intermediate_Dir ".\Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /c
-# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "..\Include" /I "..\PC" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c
-# ADD BASE MTL /nologo /D "_DEBUG" /win32
-# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib python24_d.lib /nologo /subsystem:windows /dll /debug /machine:I386 /out:".\Debug/example_d.dll" /libpath:"..\PCbuild" /export:initexample
-# SUBTRACT LINK32 /pdb:none
-
-!ENDIF
-
-# Begin Target
-
-# Name "example - Win32 Release"
-# Name "example - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;hpj;bat;for;f90"
-# Begin Source File
-
-SOURCE=.\example.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\example.def
-# End Source File
-# Begin Source File
-
-SOURCE=.\readme.txt
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl;fi;fd"
-# End Group
-# Begin Group "Resource Files"
-
-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe"
-# End Group
-# End Target
-# End Project
diff --git a/PC/example_nt/example.dsw b/PC/example_nt/example.dsw
deleted file mode 100644
index 8ddad80..0000000
--- a/PC/example_nt/example.dsw
+++ /dev/null
@@ -1,29 +0,0 @@
-Microsoft Developer Studio Workspace File, Format Version 6.00
-# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
-
-###############################################################################
-
-Project: "example"=.\example.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Global:
-
-Package=<5>
-{{{
-}}}
-
-Package=<3>
-{{{
-}}}
-
-###############################################################################
-
diff --git a/PC/example_nt/example.sln b/PC/example_nt/example.sln
new file mode 100644
index 0000000..e78c0e3
--- /dev/null
+++ b/PC/example_nt/example.sln
@@ -0,0 +1,21 @@
+Microsoft Visual Studio Solution File, Format Version 8.00
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "example", "example.vcproj", "{A0608D6F-84ED-44AE-A2A6-A3CC7F4A4030}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Global
+ GlobalSection(SolutionConfiguration) = preSolution
+ Debug = Debug
+ Release = Release
+ EndGlobalSection
+ GlobalSection(ProjectConfiguration) = postSolution
+ {A0608D6F-84ED-44AE-A2A6-A3CC7F4A4030}.Debug.ActiveCfg = Debug|Win32
+ {A0608D6F-84ED-44AE-A2A6-A3CC7F4A4030}.Debug.Build.0 = Debug|Win32
+ {A0608D6F-84ED-44AE-A2A6-A3CC7F4A4030}.Release.ActiveCfg = Release|Win32
+ {A0608D6F-84ED-44AE-A2A6-A3CC7F4A4030}.Release.Build.0 = Release|Win32
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ EndGlobalSection
+ GlobalSection(ExtensibilityAddIns) = postSolution
+ EndGlobalSection
+EndGlobal
diff --git a/PC/example_nt/example.vcproj b/PC/example_nt/example.vcproj
new file mode 100644
index 0000000..0e6830b
--- /dev/null
+++ b/PC/example_nt/example.vcproj
@@ -0,0 +1,192 @@
+<?xml version="1.0" encoding="windows-1250"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="7.10"
+ Name="example"
+ SccProjectName=""
+ SccLocalPath="">
+ <Platforms>
+ <Platform
+ Name="Win32"/>
+ </Platforms>
+ <Configurations>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory=".\Release"
+ IntermediateDirectory=".\Release"
+ ConfigurationType="2"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ InlineFunctionExpansion="1"
+ AdditionalIncludeDirectories="..\Include,..\PC"
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS"
+ StringPooling="TRUE"
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="TRUE"
+ UsePrecompiledHeader="2"
+ PrecompiledHeaderFile=".\Release/example.pch"
+ AssemblerListingLocation=".\Release/"
+ ObjectFile=".\Release/"
+ ProgramDataBaseFileName=".\Release/"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ CompileAs="0"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalOptions="/export:initexample"
+ AdditionalDependencies="odbc32.lib odbccp32.lib python24.lib"
+ OutputFile=".\Release/example.dll"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ AdditionalLibraryDirectories="..\PCbuild"
+ ModuleDefinitionFile=".\example.def"
+ ProgramDatabaseFile=".\Release/example.pdb"
+ SubSystem="2"
+ ImportLibrary=".\Release/example.lib"
+ TargetMachine="1"/>
+ <Tool
+ Name="VCMIDLTool"
+ PreprocessorDefinitions="NDEBUG"
+ MkTypLibCompatible="TRUE"
+ SuppressStartupBanner="TRUE"
+ TargetEnvironment="1"
+ TypeLibraryName=".\Release/example.tlb"
+ HeaderFileName=""/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="NDEBUG"
+ Culture="1033"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory=".\Debug"
+ IntermediateDirectory=".\Debug"
+ ConfigurationType="2"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\Include,..\PC"
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="2"
+ PrecompiledHeaderFile=".\Debug/example.pch"
+ AssemblerListingLocation=".\Debug/"
+ ObjectFile=".\Debug/"
+ ProgramDataBaseFileName=".\Debug/"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ DebugInformationFormat="4"
+ CompileAs="0"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalOptions="/export:initexample"
+ AdditionalDependencies="odbc32.lib odbccp32.lib python24_d.lib"
+ OutputFile=".\Debug/example_d.dll"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ AdditionalLibraryDirectories="..\PCbuild"
+ ModuleDefinitionFile=".\example.def"
+ GenerateDebugInformation="TRUE"
+ ProgramDatabaseFile=".\Debug/example_d.pdb"
+ SubSystem="2"
+ ImportLibrary=".\Debug/example_d.lib"
+ TargetMachine="1"/>
+ <Tool
+ Name="VCMIDLTool"
+ PreprocessorDefinitions="_DEBUG"
+ MkTypLibCompatible="TRUE"
+ SuppressStartupBanner="TRUE"
+ TargetEnvironment="1"
+ TypeLibraryName=".\Debug/example.tlb"
+ HeaderFileName=""/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="_DEBUG"
+ Culture="1033"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Source Files"
+ Filter="cpp;c;cxx;rc;def;r;odl;hpj;bat;for;f90">
+ <File
+ RelativePath="example.c">
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;$(NoInherit)"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;$(NoInherit)"/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="example.def">
+ </File>
+ </Filter>
+ <Filter
+ Name="Header Files"
+ Filter="h;hpp;hxx;hm;inl;fi;fd">
+ </Filter>
+ <Filter
+ Name="Resource Files"
+ Filter="ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe">
+ </Filter>
+ <File
+ RelativePath="readme.txt">
+ </File>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/PC/example_nt/readme.txt b/PC/example_nt/readme.txt
index aa2b309..65665ba 100644
--- a/PC/example_nt/readme.txt
+++ b/PC/example_nt/readme.txt
@@ -3,10 +3,11 @@
This directory contains everything needed (except for the Python
distribution!) to build a Python extension module using Microsoft VC++
-("Developer Studio") version 6. It has been tested with VC++ 6.0 on Python
-2.2c1. You can also use earlier versions of VC to build Python extensions,
-but the sample VC project file (example.dsw in this directory) is in VC 6
-format.
+("Developer Studio") version 7.1. It has been tested with VC++ 7.1 on
+Python 2.4. You can also use earlier versions of VC to build Python
+extensions, but the sample VC project file (example.dsw in this directory)
+is in VC 7.1 format. Notice that you need to use the same compiler version
+that was used to build Python itself.
COPY THIS DIRECTORY!
--------------------
@@ -19,10 +20,10 @@
OPEN THE PROJECT
----------------
-From VC 6.x, use the
- File -> Open Workspace...
+From VC 7.1, use the
+ File -> Open Solution...
dialog (*not* the "File -> Open..." dialog!). Navigate to and select the
-file "example.dsw", in the *copy* of the example_nt directory you made
+file "example.sln", in the *copy* of the example_nt directory you made
above.
Click Open.
@@ -31,15 +32,12 @@
In order to check that everything is set up right, try building:
1. Select a configuration. This step is optional. Do
- Build -> Select Active Configuration...
- and select either "example - Win32 Release" or "example - Win32 Debug".
+ Build -> Configuration Manager... -> Active Solution Configuration
+ and select either "Release" or "Debug".
If you skip this step, you'll use the Debug configuration by default.
2. Build the DLL. Do
- Build -> Build example_d.dll
- in Debug mode, or
- Build -> Build example.dll
- in Release mode.
+ Build -> Build Solution
This creates all intermediate and result files in a subdirectory which
is called either Debug or Release, depending on which configuration you
picked in the preceding step.
@@ -96,7 +94,7 @@
Now your options are:
-1) Copy example.dsw and example.dsp, rename them to spam.*, and edit them
+1) Copy example.sln and example.vcproj, rename them to spam.*, and edit them
by hand.
or
@@ -109,7 +107,8 @@
(This is an annoying little file with only two lines. An alternative
approach is to forget about the .def file, and add the option
"/export:initspam" somewhere to the Link settings, by manually editing the
-"Project Options" box).
+"Project -> Properties -> Linker -> Command Line -> Additional Options"
+box).
You are now all set to build your extension, unless it requires other
external libraries, include files, etc. See Python's Extending and
@@ -119,47 +118,44 @@
CREATING A BRAND NEW PROJECT
----------------------------
Use the
- File -> New... -> Projects
-dialog to create a new Project Workspace. Select "Win32 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, a sibling of Include and PC). Select Win32 as the
-platform (in my version, this is the only choice). Make sure the "Create
-new workspace" radio button is selected. Click OK.
+ File -> New -> Project...
+dialog to create a new Project Workspace. Select "Visual C++ Projects/Win32/
+Win32 Project", enter the name ("spam"), and make sure the "Location" is
+set to parent of the spam directory you have created (which should be a direct
+subdirectory of the Python build tree, a sibling of Include and PC).
+In "Application Settings", select "DLL", and "Empty Project". Click OK.
+
+You should now create the file spam.def as instructed in the previous
+section. Add the source files (including the .def file) to the project,
+using "Project", "Add Existing Item".
Now open the
- Project -> Settings...
+ Project -> spam properties...
dialog. (Impressive, isn't it? :-) You only need to change a few
settings. Make sure "All Configurations" is selected from the "Settings
-for:" dropdown list. Select the "C/C++" tab. Choose the "Preprocessor"
+for:" dropdown list. Select the "C/C++" tab. Choose the "General"
category in the popup menu at the top. Type the following text in the
-entry box labeled "Addditional include directories:"
+entry box labeled "Addditional Include Directories:"
..\Include,..\PC
-Then, choose the "Input" category in the Link tab, and enter
+Then, choose the "General" category in the "Linker" tab, and enter
..\PCbuild
-in the "Additional library path:" box.
+in the "Additional library Directories" box.
-Now you need to add some mode-specific settings:
+Now you need to add some mode-specific settings (select "Accept"
+when asked to confirm your changes):
-Select "Win32 Release" in the "Settings for:" dropdown list. Click the
-"Link" tab, choose the "Input" Category, and append "python22.lib" to the
-list in the "Object/library modules:" box.
+Select "Release" in the "Configuration" dropdown list. Click the
+"Link" tab, choose the "Input" Category, and append "python24.lib" to the
+list in the "Additional Dependencies" box.
-Select "Win32 Debug" in the "Settings for:" dropdown list, and append
-"python22_d.lib" to the list in the "Object/library modules:" box. Then
-click on the C/C++ tab, select "Code Generation" from the "Category:"
-dropdown list, and select "Debug Multithreaded DLL" from the "Use run-time
-library:" dropdown list.
+Select "Debug" in the "Settings for:" dropdown list, and append
+"python24_d.lib" to the list in the Additional Dependencies" box. Then
+click on the C/C++ tab, select "Code Generation", and select
+"Multi-threaded Debug DLL" from the "Runtime library" dropdown list.
-Select "Win32 Release" again from the "Settings for:" dropdown list.
-Select "Multithreaded DLL" from the "Use run-time library:" dropdown list.
+Select "Release" again from the "Settings for:" dropdown list.
+Select "Multi-threaded DLL" from the "Use run-time library:" dropdown list.
That's all <wink>.
-
-You should now create the file spam.def as instructed in the previous
-section. Then 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.)