Automate build for python3.dll.
Package missing files.
diff --git a/PC/python3.mak b/PC/python3.mak
new file mode 100644
index 0000000..821fd9f
--- /dev/null
+++ b/PC/python3.mak
@@ -0,0 +1,10 @@
+$(OutDir)python32.dll:	python3.def $(OutDir)python32stub.lib

+	cl /LD /Fe$(OutDir)python3.dll python3dll.c python3.def $(OutDir)python32stub.lib

+

+$(OutDir)python32stub.lib:	python32stub.def

+	lib /def:python32stub.def /out:$(OutDir)python32stub.lib /MACHINE:$(MACHINE)

+

+clean:

+	del $(OutDir)python3.dll $(OutDir)python3.lib $(OutDir)python32stub.lib $(OutDir)python3.exp $(OutDir)python32stub.exp

+

+rebuild: clean $(OutDir)python32.dll

diff --git a/PC/python32gen.py b/PC/python32gen.py
new file mode 100644
index 0000000..e64f752
--- /dev/null
+++ b/PC/python32gen.py
@@ -0,0 +1,25 @@
+# Generate python32stub.def out of python3.def

+# The regular import library cannot be used,

+# since it doesn't provide the right symbols for

+# data forwarding

+out = open("python32stub.def", "w")

+out.write('LIBRARY "python32"\n')

+out.write('EXPORTS\n')

+

+inp = open("python3.def")

+inp.readline()

+line = inp.readline()

+assert line.strip()=='EXPORTS'

+

+for line in inp:

+    # SYM1=python32.SYM2[ DATA]

+    head, tail = line.split('.')

+    if 'DATA' in tail:

+        symbol, tail = tail.split(' ')

+    else:

+        symbol = tail.strip()

+    out.write(symbol+'\n')

+

+inp.close()

+out.close()

+

diff --git a/PC/python32stub.def b/PC/python32stub.def
new file mode 100644
index 0000000..ad1967c
--- /dev/null
+++ b/PC/python32stub.def
@@ -0,0 +1,698 @@
+LIBRARY "python32"

+EXPORTS

+PyArg_Parse

+PyArg_ParseTuple

+PyArg_ParseTupleAndKeywords

+PyArg_UnpackTuple

+PyArg_VaParse

+PyArg_VaParseTupleAndKeywords

+PyArg_ValidateKeywordArguments

+PyBaseObject_Type

+PyBool_FromLong

+PyBool_Type

+PyBuffer_FillContiguousStrides

+PyBuffer_FillInfo

+PyBuffer_FromContiguous

+PyBuffer_GetPointer

+PyBuffer_IsContiguous

+PyBuffer_Release

+PyBuffer_ToContiguous

+PyByteArrayIter_Type

+PyByteArray_AsString

+PyByteArray_Concat

+PyByteArray_FromObject

+PyByteArray_FromStringAndSize

+PyByteArray_Resize

+PyByteArray_Size

+PyByteArray_Type

+PyBytesIter_Type

+PyBytes_AsString

+PyBytes_AsStringAndSize

+PyBytes_Concat

+PyBytes_ConcatAndDel

+PyBytes_DecodeEscape

+PyBytes_FromFormat

+PyBytes_FromFormatV

+PyBytes_FromObject

+PyBytes_FromString

+PyBytes_FromStringAndSize

+PyBytes_Repr

+PyBytes_Size

+PyBytes_Type

+PyCFunction_Call

+PyCFunction_ClearFreeList

+PyCFunction_GetFlags

+PyCFunction_GetFunction

+PyCFunction_GetSelf

+PyCFunction_NewEx

+PyCFunction_Type

+PyCallIter_New

+PyCallIter_Type

+PyCallable_Check

+PyCapsule_GetContext

+PyCapsule_GetDestructor

+PyCapsule_GetName

+PyCapsule_GetPointer

+PyCapsule_Import

+PyCapsule_IsValid

+PyCapsule_New

+PyCapsule_SetContext

+PyCapsule_SetDestructor

+PyCapsule_SetName

+PyCapsule_SetPointer

+PyCapsule_Type

+PyClassMethodDescr_Type

+PyCodec_BackslashReplaceErrors

+PyCodec_Decode

+PyCodec_Decoder

+PyCodec_Encode

+PyCodec_Encoder

+PyCodec_IgnoreErrors

+PyCodec_IncrementalDecoder

+PyCodec_IncrementalEncoder

+PyCodec_KnownEncoding

+PyCodec_LookupError

+PyCodec_Register

+PyCodec_RegisterError

+PyCodec_ReplaceErrors

+PyCodec_StreamReader

+PyCodec_StreamWriter

+PyCodec_StrictErrors

+PyCodec_XMLCharRefReplaceErrors

+PyComplex_FromDoubles

+PyComplex_ImagAsDouble

+PyComplex_RealAsDouble

+PyComplex_Type

+PyDescr_NewClassMethod

+PyDescr_NewGetSet

+PyDescr_NewMember

+PyDescr_NewMethod

+PyDictItems_Type

+PyDictIterItem_Type

+PyDictIterKey_Type

+PyDictIterValue_Type

+PyDictKeys_Type

+PyDictProxy_New

+PyDictProxy_Type

+PyDictValues_Type

+PyDict_Clear

+PyDict_Contains

+PyDict_Copy

+PyDict_DelItem

+PyDict_DelItemString

+PyDict_GetItem

+PyDict_GetItemString

+PyDict_GetItemWithError

+PyDict_Items

+PyDict_Keys

+PyDict_Merge

+PyDict_MergeFromSeq2

+PyDict_New

+PyDict_Next

+PyDict_SetItem

+PyDict_SetItemString

+PyDict_Size

+PyDict_Type

+PyDict_Update

+PyDict_Values

+PyEllipsis_Type

+PyEnum_Type

+PyErr_BadArgument

+PyErr_BadInternalCall

+PyErr_CheckSignals

+PyErr_Clear

+PyErr_Display

+PyErr_ExceptionMatches

+PyErr_Fetch

+PyErr_Format

+PyErr_GivenExceptionMatches

+PyErr_NewException

+PyErr_NewExceptionWithDoc

+PyErr_NoMemory

+PyErr_NormalizeException

+PyErr_Occurred

+PyErr_Print

+PyErr_PrintEx

+PyErr_ProgramText

+PyErr_Restore

+PyErr_SetFromErrno

+PyErr_SetFromErrnoWithFilename

+PyErr_SetFromErrnoWithFilenameObject

+PyErr_SetInterrupt

+PyErr_SetNone

+PyErr_SetObject

+PyErr_SetString

+PyErr_SyntaxLocation

+PyErr_WarnEx

+PyErr_WarnExplicit

+PyErr_WarnFormat

+PyErr_WriteUnraisable

+PyEval_AcquireLock

+PyEval_AcquireThread

+PyEval_CallFunction

+PyEval_CallMethod

+PyEval_CallObjectWithKeywords

+PyEval_EvalCode

+PyEval_EvalCodeEx

+PyEval_EvalFrame

+PyEval_EvalFrameEx

+PyEval_GetBuiltins

+PyEval_GetCallStats

+PyEval_GetFrame

+PyEval_GetFuncDesc

+PyEval_GetFuncName

+PyEval_GetGlobals

+PyEval_GetLocals

+PyEval_InitThreads

+PyEval_ReInitThreads

+PyEval_ReleaseLock

+PyEval_ReleaseThread

+PyEval_RestoreThread

+PyEval_SaveThread

+PyEval_ThreadsInitialized

+PyExc_ArithmeticError

+PyExc_AssertionError

+PyExc_AttributeError

+PyExc_BaseException

+PyExc_BufferError

+PyExc_BytesWarning

+PyExc_DeprecationWarning

+PyExc_EOFError

+PyExc_EnvironmentError

+PyExc_Exception

+PyExc_FloatingPointError

+PyExc_FutureWarning

+PyExc_GeneratorExit

+PyExc_IOError

+PyExc_ImportError

+PyExc_ImportWarning

+PyExc_IndentationError

+PyExc_IndexError

+PyExc_KeyError

+PyExc_KeyboardInterrupt

+PyExc_LookupError

+PyExc_MemoryError

+PyExc_MemoryErrorInst

+PyExc_NameError

+PyExc_NotImplementedError

+PyExc_OSError

+PyExc_OverflowError

+PyExc_PendingDeprecationWarning

+PyExc_RecursionErrorInst

+PyExc_ReferenceError

+PyExc_RuntimeError

+PyExc_RuntimeWarning

+PyExc_StopIteration

+PyExc_SyntaxError

+PyExc_SyntaxWarning

+PyExc_SystemError

+PyExc_SystemExit

+PyExc_TabError

+PyExc_TypeError

+PyExc_UnboundLocalError

+PyExc_UnicodeDecodeError

+PyExc_UnicodeEncodeError

+PyExc_UnicodeError

+PyExc_UnicodeTranslateError

+PyExc_UnicodeWarning

+PyExc_UserWarning

+PyExc_ValueError

+PyExc_Warning

+PyExc_ZeroDivisionError

+PyException_GetCause

+PyException_GetContext

+PyException_GetTraceback

+PyException_SetCause

+PyException_SetContext

+PyException_SetTraceback

+PyFile_FromFd

+PyFile_GetLine

+PyFile_WriteObject

+PyFile_WriteString

+PyFilter_Type

+PyFloat_AsDouble

+PyFloat_FromDouble

+PyFloat_FromString

+PyFloat_GetInfo

+PyFloat_GetMax

+PyFloat_GetMin

+PyFloat_Type

+PyFrozenSet_New

+PyFrozenSet_Type

+PyGC_Collect

+PyGILState_Ensure

+PyGILState_GetThisThreadState

+PyGILState_Release

+PyGetSetDescr_Type

+PyImport_AddModule

+PyImport_AppendInittab

+PyImport_Cleanup

+PyImport_ExecCodeModule

+PyImport_ExecCodeModuleEx

+PyImport_ExecCodeModuleWithPathnames

+PyImport_GetImporter

+PyImport_GetMagicNumber

+PyImport_GetMagicTag

+PyImport_GetModuleDict

+PyImport_Import

+PyImport_ImportFrozenModule

+PyImport_ImportModule

+PyImport_ImportModuleLevel

+PyImport_ImportModuleNoBlock

+PyImport_ReloadModule

+PyInterpreterState_Clear

+PyInterpreterState_Delete

+PyInterpreterState_New

+PyIter_Next

+PyListIter_Type

+PyListRevIter_Type

+PyList_Append

+PyList_AsTuple

+PyList_GetItem

+PyList_GetSlice

+PyList_Insert

+PyList_New

+PyList_Reverse

+PyList_SetItem

+PyList_SetSlice

+PyList_Size

+PyList_Sort

+PyList_Type

+PyLongRangeIter_Type

+PyLong_AsDouble

+PyLong_AsLong

+PyLong_AsLongAndOverflow

+PyLong_AsLongLong

+PyLong_AsLongLongAndOverflow

+PyLong_AsSize_t

+PyLong_AsSsize_t

+PyLong_AsUnsignedLong

+PyLong_AsUnsignedLongLong

+PyLong_AsUnsignedLongLongMask

+PyLong_AsUnsignedLongMask

+PyLong_AsVoidPtr

+PyLong_FromDouble

+PyLong_FromLong

+PyLong_FromLongLong

+PyLong_FromSize_t

+PyLong_FromSsize_t

+PyLong_FromString

+PyLong_FromUnsignedLong

+PyLong_FromUnsignedLongLong

+PyLong_FromVoidPtr

+PyLong_GetInfo

+PyLong_Type

+PyMap_Type

+PyMapping_Check

+PyMapping_GetItemString

+PyMapping_HasKey

+PyMapping_HasKeyString

+PyMapping_Items

+PyMapping_Keys

+PyMapping_Length

+PyMapping_SetItemString

+PyMapping_Size

+PyMapping_Values

+PyMem_Free

+PyMem_Malloc

+PyMem_Realloc

+PyMemberDescr_Type

+PyMemoryView_FromBuffer

+PyMemoryView_FromObject

+PyMemoryView_GetContiguous

+PyMemoryView_Type

+PyMethodDescr_Type

+PyModule_AddIntConstant

+PyModule_AddObject

+PyModule_AddStringConstant

+PyModule_Create2

+PyModule_GetDef

+PyModule_GetDict

+PyModule_GetFilename

+PyModule_GetFilenameObject

+PyModule_GetName

+PyModule_GetState

+PyModule_New

+PyModule_Type

+PyNullImporter_Type

+PyNumber_Absolute

+PyNumber_Add

+PyNumber_And

+PyNumber_AsSsize_t

+PyNumber_Check

+PyNumber_Divmod

+PyNumber_Float

+PyNumber_FloorDivide

+PyNumber_InPlaceAdd

+PyNumber_InPlaceAnd

+PyNumber_InPlaceFloorDivide

+PyNumber_InPlaceLshift

+PyNumber_InPlaceMultiply

+PyNumber_InPlaceOr

+PyNumber_InPlacePower

+PyNumber_InPlaceRemainder

+PyNumber_InPlaceRshift

+PyNumber_InPlaceSubtract

+PyNumber_InPlaceTrueDivide

+PyNumber_InPlaceXor

+PyNumber_Index

+PyNumber_Invert

+PyNumber_Long

+PyNumber_Lshift

+PyNumber_Multiply

+PyNumber_Negative

+PyNumber_Or

+PyNumber_Positive

+PyNumber_Power

+PyNumber_Remainder

+PyNumber_Rshift

+PyNumber_Subtract

+PyNumber_ToBase

+PyNumber_TrueDivide

+PyNumber_Xor

+PyOS_AfterFork

+PyOS_InitInterrupts

+PyOS_InputHook

+PyOS_InterruptOccurred

+PyOS_ReadlineFunctionPointer

+PyOS_double_to_string

+PyOS_getsig

+PyOS_mystricmp

+PyOS_mystrnicmp

+PyOS_setsig

+PyOS_snprintf

+PyOS_string_to_double

+PyOS_strtol

+PyOS_strtoul

+PyOS_vsnprintf

+PyObject_ASCII

+PyObject_AsCharBuffer

+PyObject_AsFileDescriptor

+PyObject_AsReadBuffer

+PyObject_AsWriteBuffer

+PyObject_Bytes

+PyObject_Call

+PyObject_CallFunction

+PyObject_CallFunctionObjArgs

+PyObject_CallMethod

+PyObject_CallMethodObjArgs

+PyObject_CallObject

+PyObject_CheckReadBuffer

+PyObject_ClearWeakRefs

+PyObject_CopyData

+PyObject_DelItem

+PyObject_DelItemString

+PyObject_Dir

+PyObject_Format

+PyObject_Free

+PyObject_GC_Del

+PyObject_GC_Track

+PyObject_GC_UnTrack

+PyObject_GenericGetAttr

+PyObject_GenericSetAttr

+PyObject_GetAttr

+PyObject_GetAttrString

+PyObject_GetBuffer

+PyObject_GetItem

+PyObject_GetIter

+PyObject_HasAttr

+PyObject_HasAttrString

+PyObject_Hash

+PyObject_HashNotImplemented

+PyObject_Init

+PyObject_InitVar

+PyObject_IsInstance

+PyObject_IsSubclass

+PyObject_IsTrue

+PyObject_Length

+PyObject_Malloc

+PyObject_Not

+PyObject_Realloc

+PyObject_Repr

+PyObject_RichCompare

+PyObject_RichCompareBool

+PyObject_SelfIter

+PyObject_SetAttr

+PyObject_SetAttrString

+PyObject_SetItem

+PyObject_Size

+PyObject_Str

+PyObject_Type

+PyParser_SimpleParseFileFlags

+PyParser_SimpleParseStringFlags

+PyProperty_Type

+PyRangeIter_Type

+PyRange_Type

+PyReversed_Type

+PySeqIter_New

+PySeqIter_Type

+PySequence_Check

+PySequence_Concat

+PySequence_Contains

+PySequence_Count

+PySequence_DelItem

+PySequence_DelSlice

+PySequence_Fast

+PySequence_GetItem

+PySequence_GetSlice

+PySequence_In

+PySequence_InPlaceConcat

+PySequence_InPlaceRepeat

+PySequence_Index

+PySequence_Length

+PySequence_List

+PySequence_Repeat

+PySequence_SetItem

+PySequence_SetSlice

+PySequence_Size

+PySequence_Tuple

+PySetIter_Type

+PySet_Add

+PySet_Clear

+PySet_Contains

+PySet_Discard

+PySet_New

+PySet_Pop

+PySet_Size

+PySet_Type

+PySlice_GetIndices

+PySlice_GetIndicesEx

+PySlice_New

+PySlice_Type

+PySortWrapper_Type

+PyState_FindModule

+PyStructSequence_GetItem

+PyStructSequence_New

+PyStructSequence_NewType

+PyStructSequence_SetItem

+PySuper_Type

+PySys_AddWarnOption

+PySys_AddWarnOptionUnicode

+PySys_FormatStderr

+PySys_FormatStdout

+PySys_GetObject

+PySys_HasWarnOptions

+PySys_ResetWarnOptions

+PySys_SetArgv

+PySys_SetArgvEx

+PySys_SetObject

+PySys_SetPath

+PySys_WriteStderr

+PySys_WriteStdout

+PyThreadState_Clear

+PyThreadState_Delete

+PyThreadState_DeleteCurrent

+PyThreadState_Get

+PyThreadState_GetDict

+PyThreadState_New

+PyThreadState_SetAsyncExc

+PyThreadState_Swap

+PyTraceBack_Here

+PyTraceBack_Print

+PyTraceBack_Type

+PyTupleIter_Type

+PyTuple_ClearFreeList

+PyTuple_GetItem

+PyTuple_GetSlice

+PyTuple_New

+PyTuple_Pack

+PyTuple_SetItem

+PyTuple_Size

+PyTuple_Type

+PyType_ClearCache

+PyType_FromSpec

+PyType_GenericAlloc

+PyType_GenericNew

+PyType_IsSubtype

+PyType_Modified

+PyType_Ready

+PyType_Type

+PyUnicodeDecodeError_Create

+PyUnicodeDecodeError_GetEncoding

+PyUnicodeDecodeError_GetEnd

+PyUnicodeDecodeError_GetObject

+PyUnicodeDecodeError_GetReason

+PyUnicodeDecodeError_GetStart

+PyUnicodeDecodeError_SetEnd

+PyUnicodeDecodeError_SetReason

+PyUnicodeDecodeError_SetStart

+PyUnicodeEncodeError_GetEncoding

+PyUnicodeEncodeError_GetEnd

+PyUnicodeEncodeError_GetObject

+PyUnicodeEncodeError_GetReason

+PyUnicodeEncodeError_GetStart

+PyUnicodeEncodeError_SetEnd

+PyUnicodeEncodeError_SetReason

+PyUnicodeEncodeError_SetStart

+PyUnicodeIter_Type

+PyUnicodeTranslateError_GetEnd

+PyUnicodeTranslateError_GetObject

+PyUnicodeTranslateError_GetReason

+PyUnicodeTranslateError_GetStart

+PyUnicodeTranslateError_SetEnd

+PyUnicodeTranslateError_SetReason

+PyUnicodeTranslateError_SetStart

+PyUnicodeUCS2_Append

+PyUnicodeUCS2_AppendAndDel

+PyUnicodeUCS2_AsASCIIString

+PyUnicodeUCS2_AsCharmapString

+PyUnicodeUCS2_AsDecodedObject

+PyUnicodeUCS2_AsDecodedUnicode

+PyUnicodeUCS2_AsEncodedObject

+PyUnicodeUCS2_AsEncodedString

+PyUnicodeUCS2_AsEncodedUnicode

+PyUnicodeUCS2_AsLatin1String

+PyUnicodeUCS2_AsRawUnicodeEscapeString

+PyUnicodeUCS2_AsUTF16String

+PyUnicodeUCS2_AsUTF32String

+PyUnicodeUCS2_AsUTF8String

+PyUnicodeUCS2_AsUnicodeEscapeString

+PyUnicodeUCS2_AsWideChar

+PyUnicodeUCS2_ClearFreelist

+PyUnicodeUCS2_Compare

+PyUnicodeUCS2_Concat

+PyUnicodeUCS2_Contains

+PyUnicodeUCS2_Count

+PyUnicodeUCS2_Decode

+PyUnicodeUCS2_DecodeASCII

+PyUnicodeUCS2_DecodeCharmap

+PyUnicodeUCS2_DecodeFSDefault

+PyUnicodeUCS2_DecodeFSDefaultAndSize

+PyUnicodeUCS2_DecodeLatin1

+PyUnicodeUCS2_DecodeRawUnicodeEscape

+PyUnicodeUCS2_DecodeUTF16

+PyUnicodeUCS2_DecodeUTF16Stateful

+PyUnicodeUCS2_DecodeUTF32

+PyUnicodeUCS2_DecodeUTF32Stateful

+PyUnicodeUCS2_DecodeUTF8

+PyUnicodeUCS2_DecodeUTF8Stateful

+PyUnicodeUCS2_DecodeUnicodeEscape

+PyUnicodeUCS2_FSConverter

+PyUnicodeUCS2_FSDecoder

+PyUnicodeUCS2_Find

+PyUnicodeUCS2_Format

+PyUnicodeUCS2_FromEncodedObject

+PyUnicodeUCS2_FromFormat

+PyUnicodeUCS2_FromFormatV

+PyUnicodeUCS2_FromObject

+PyUnicodeUCS2_FromOrdinal

+PyUnicodeUCS2_FromString

+PyUnicodeUCS2_FromStringAndSize

+PyUnicodeUCS2_FromWideChar

+PyUnicodeUCS2_GetDefaultEncoding

+PyUnicodeUCS2_GetSize

+PyUnicodeUCS2_IsIdentifier

+PyUnicodeUCS2_Join

+PyUnicodeUCS2_Partition

+PyUnicodeUCS2_RPartition

+PyUnicodeUCS2_RSplit

+PyUnicodeUCS2_Replace

+PyUnicodeUCS2_Resize

+PyUnicodeUCS2_RichCompare

+PyUnicodeUCS2_SetDefaultEncoding

+PyUnicodeUCS2_Split

+PyUnicodeUCS2_Splitlines

+PyUnicodeUCS2_Tailmatch

+PyUnicodeUCS2_Translate

+PyUnicode_BuildEncodingMap

+PyUnicode_CompareWithASCIIString

+PyUnicode_DecodeUTF7

+PyUnicode_DecodeUTF7Stateful

+PyUnicode_EncodeFSDefault

+PyUnicode_InternFromString

+PyUnicode_InternImmortal

+PyUnicode_InternInPlace

+PyUnicode_Type

+PyWeakref_GetObject

+PyWeakref_NewProxy

+PyWeakref_NewRef

+PyWrapperDescr_Type

+PyWrapper_New

+PyZip_Type

+Py_AddPendingCall

+Py_AtExit

+Py_BuildValue

+Py_CompileString

+Py_DecRef

+Py_EndInterpreter

+Py_Exit

+Py_FatalError

+Py_FileSystemDefaultEncoding

+Py_Finalize

+Py_GetBuildInfo

+Py_GetCompiler

+Py_GetCopyright

+Py_GetExecPrefix

+Py_GetPath

+Py_GetPlatform

+Py_GetPrefix

+Py_GetProgramFullPath

+Py_GetProgramName

+Py_GetPythonHome

+Py_GetRecursionLimit

+Py_GetVersion

+Py_HasFileSystemDefaultEncoding

+Py_IncRef

+Py_Initialize

+Py_InitializeEx

+Py_IsInitialized

+Py_Main

+Py_MakePendingCalls

+Py_NewInterpreter

+Py_ReprEnter

+Py_ReprLeave

+Py_SetProgramName

+Py_SetPythonHome

+Py_SetRecursionLimit

+Py_SymtableString

+Py_VaBuildValue

+_PyErr_BadInternalCall

+_PyObject_CallFunction_SizeT

+_PyObject_CallMethod_SizeT

+_PyObject_GC_Malloc

+_PyObject_GC_New

+_PyObject_GC_NewVar

+_PyObject_GC_Resize

+_PyObject_New

+_PyObject_NewVar

+_PyState_AddModule

+_PyThreadState_Init

+_PyThreadState_Prealloc

+_PyTrash_delete_later

+_PyTrash_delete_nesting

+_PyTrash_deposit_object

+_PyTrash_destroy_chain

+_PyWeakref_CallableProxyType

+_PyWeakref_ProxyType

+_PyWeakref_RefType

+_Py_BuildValue_SizeT

+_Py_CheckRecursionLimit

+_Py_CheckRecursiveCall

+_Py_Dealloc

+_Py_EllipsisObject

+_Py_FalseStruct

+Py_GetCopyright

+_Py_NotImplementedStruct

+_Py_SwappedOp

+_Py_TrueStruct

+_Py_VaBuildValue_SizeT