[PythonCE] Linker errors building PyWin32 for CE (ARMRel420)

Jesse Davis jdavis at wgen.net
Mon Feb 28 21:40:33 CET 2005


Salutations,

I'm getting linker errors (3 unresolved external symbols) building
PyWin32.

I followed the instructions on Kashtan's page, so I "nmake all" from
PCbuild\WinCE.  Everything builds fine until nmake reaches
makefile.pywintypes (output included below).  It tries to link
pywintypes.dll but fails to resolve symbols
PyWinMethod_NewWAVEFORMATEXType, PyWAVEFORMATEXType, & PyDEVMODEType,
which are required by PyWinTypesmodule.obj.  The first two symbols can
be found in PyWAVEFORMATEX.cpp, the third in PyDEVMODE.cpp.  So adding
PyWAVEFORMATEX.cpp to makefile.pywintypes takes care of two of the
symbols, but PyDEVMODE.cpp can't compile (output below).  And besides,
why should I have to add things to the makefile?

The compile errors in PyDEVMODE.cpp seem related to differences in the
wingdi.h for Windows & WinCE.  For example, PyDEVMODE.cpp refers to
_devicemodeW.dmPosition.  In the Windows wingdi.h, _devicemodeW has such
a member; in WinCE's wingdi.h, it's absent.  There are many other
members that are absent or have different types in the two headers,
meaning I can't build PyDEVMODE.cpp, so I can't satisfy
PyWinTypesmodule.obj's imports.

However, I imagine others can build PyWin32 without lots of tweaks,
either to makefile.pywintypes or to PyDEVMODE.cpp.  What am I doing
wrong?

Appreciations,
Jesse.

************ link.exe output on original makefile.pywintypes:
************

Building pywintypes
        link.exe @C:\DOCUME~1\jdavis\LOCALS~1\Temp\nma00560.
   Creating library binaries\ARMRel420\pywintypes\pywintypes.lib and
object binaries\ARMRel420\pywin
types\pywintypes.exp
LINK : warning LNK4049: locally defined symbol "PyCE_SystemTimeToCTime"
imported
LINK : warning LNK4049: locally defined symbol "PyCE_UnixTimeToFileTime"
imported
PyWinTypesmodule.obj : error LNK2001: unresolved external symbol "struct
_object * __cdecl PyWinMeth
od_NewWAVEFORMATEX(struct _object *,struct _object *)"
(?PyWinMethod_NewWAVEFORMATEX@@YAPAU_object@@
PAU1 at 0@Z)
PyWinTypesmodule.obj : error LNK2001: unresolved external symbol "struct
_typeobject PyWAVEFORMATEXT
ype" (?PyWAVEFORMATEXType@@3U_typeobject@@A)
PyWinTypesmodule.obj : error LNK2001: unresolved external symbol "struct
_typeobject PyDEVMODEType"
(?PyDEVMODEType@@3U_typeobject@@A)
binaries\ARMRel420\pywintypes\pywintypes.dll : fatal error LNK1120: 3
unresolved externals
NMAKE : fatal error U1077: 'link.exe' : return code '0x460'
Stop.
NMAKE : fatal error U1077: '"C:\Program Files\Microsoft eMbedded C++
4.0\COMMON\EVC\bin\NMAKE.EXE"'
: return code '0x2'
Stop.
NMAKE : fatal error U1077: '"C:\Program Files\Microsoft eMbedded C++
4.0\COMMON\EVC\bin\NMAKE.EXE"'
: return code '0x2'
Stop.

************ clarm.exe output after adding PyDEVMODE.cpp to
makefile.pywintypes: ************

        clarm.exe /O2 /D "ARM" /D "_ARM_" /D "NDEBUG" /I ..\..\Include
/I ..\..\PC\WinCE  /D Py_ENAB
LE_SHARED  /D _WIN32_WCE=420 /D WIN32_PLATFORM_PSPC=420 /D UNDER_CE=420
/D UNICODE /D _UNICODE /D _
USRDLL /D WIN32PPC /D WIN32  /D STRICT /D INTERNATIONAL /D USA /D
INTLMSG_CODEPAGE  /nologo /W3 /Fp"
binaries\ARMRel420\pywintypes\pywintypes.pch"
/Fo"binaries\ARMRel420\pywintypes\\" /c /D BUILD_PYWIN
TYPES /D /Oxs C:\share\pywin32\win32\src\PyDEVMODE.cpp
PyDEVMODE.cpp
c:\share\pywin32\win32\src\pydevmode.cpp(26) : error C2039: 'dmPosition'
: is not a member of '_devi
cemodeW'
        c:\program files\windows ce tools\wce420\pocket pc
2003\include\armv4\wingdi.h(427) : see de
claration of '_devicemodeW'
c:\share\pywin32\win32\src\pydevmode.cpp(26) : error C2228: left of '.x'
must have class/struct/unio
n type
c:\share\pywin32\win32\src\pydevmode.cpp(26) : error C2440:
'initializing' : cannot convert from 'ch
ar [40]' to 'int'
        This conversion requires a reinterpret_cast, a C-style cast or
function-style cast
<snip>
.....and many other errors

************ Relevant environment variables ************

CC=clarm.exe
CESUBSYSTEM=windowsce,4.20
CEVERSION=420
CFG=ARMREL
INCLUDE=C:\Program Files\Windows CE Tools\WCE420\pocket pc
2003\include\armv4;C:\Program Files\Windo
ws CE Tools\WCE420\pocket pc 2003\MFC\include;C:\Program Files\Windows
CE Tools\WCE420\pocket pc 200
3\ATL\include;
LIB=C:\Program Files\Windows CE Tools\WCE420\pocket pc
2003\lib\armv4;C:\Program Files\Windows CE To
ols\WCE420\pocket pc 2003\MFC\lib\armv4;C:\Program Files\Windows CE
Tools\WCE420\pocket pc 2003\ATL\
lib\armv4;
OS=Windows_NT
OSVERSION=WCE420
PLATFORM=pocket pc 2003
PYWIN32ROOT=C:\share\pywin32
SDKROOT=C:\Program Files\Windows CE Tools
TARGETCPU=ARM
TARGET_OSVERSION=420
WCEROOT=C:\Program Files\Microsoft eMbedded C++ 4.0



More information about the PythonCE mailing list