Platform SDK for Windows Server 2003 SP1/R2报error LNK2001: unresolved external symbol __security_cookie的解决办法
PSDK2003SP1/R2有最早的MSVC x64编译器,并且它能链接到x64最早版本的msvcrt.dll(版本号6.10,但实质上XPx64SP1/2003x64SP1/R2的x64版msvcrt.dll是7.00),7-Zip就是使用这个工具链编译x64二进制的(但是7-Zip需要最新版的ml64.exe)
出现这个问题的原因是PSDK2003SP1/R2带的x64编译器是Visual C++ 2005早期版本,Visual C++ 2005默认开了/GS,MS编译的LIBCMT[D].lib(/MT[d]需要的C运行库)等库也开了这个开关,但这些库并没有实现__security_cookie
解决办法:
1、链接bufferoverflowu.lib
cl hello.c bufferoverflowu.lib
cl /EHsc hello.cpp bufferoverflowu.lib
2、使用/MD[d]链接MSVCRT[D].lib进而链接msvcrt[d].dll
cl /MD hello.c
cl /MD /EHsc hello.cpp
参考资料: