A C++ project built successfully with CONNECT Update 4 SDK is failing to link correctly with CONNECT Update 5 SDK. The problem concerns Win32 libraries (despite the name, these really are 64-bit Windows libraries — complain to Microsoft if you believe that to be confusing).
Here's the relevant part of my bmake file that concerns linking. Note that the Win32 lib path is explicitly set...
# Bentley libraries LINKER_LIBRARIES + $(mdlLibs)bentley.lib ... LINKER_LIBRARIES + $(mdlLibs)ECObjects.lib # Win32 libraries LINKER_LIBRARIES + $(platformSdkLibs)Shlwapi.lib LINKER_LIBRARIES + $(platformSdkLibs)Shell32.lib LINKER_LIBRARIES + $(platformSdkLibs)Gdi32.lib
When I build the project, the linker complains that it can't find some library files...
C:\PROGRA~2\MIA713~1\Windows\v7.1A\Lib\x64\Shlwapi.lib C:\PROGRA~2\MIA713~1\Windows\v7.1A\Lib\x64\Shell32.lib C:\PROGRA~2\MIA713~1\Windows\v7.1A\Lib\x64\Gdi32.lib gdi32.lib user32.lib kernel32.lib G:\PROGRA~2\VIC266~1\VC\\lib\amd64\msvcrt.lib G:\PROGRA~1\Bentley\MICROS~2\SDK\library\mdlbltin.lib LINK : fatal error LNK1181: cannot open input file 'gdi32.lib'
Note that the linker has found the Shlwapi, Shell32 and Gdi32 libraries because I've explicitly told it where to find them. What I don't understand is where the references to gdi32, user32 and kernel32 libraries have come from. I can understand the the linker doesn't find those because no folder is specified — but where did they come from? I repeat that this project used to build correctly with CONNECT Update 4 and that this problem has arisen after moving to Update 5.
Can I specify a default folder for the linker to search? The files not found are all present in the same folder as those I explicitly qualified with the path C:\PROGRA~2\MIA713~1\Windows\v7.1A\Lib\x64 (which is the DOS\X version of C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Lib\x64).