I am compiling OpenSSL under Windows XP 64 using PSDK2003.
There is a /MD flag in the compiler settings.
If the PATH environment variable contains %SYSTEMROOT%/system32, then compilation is successful.
But if I don't specify %SYSTEMROOT%/system32, then compilation fails with an error:
error LNK2001: unresolved external symbol __security_check_cookie
In this case, if I specify the additional library bufferoverflowu.lib, then compilation will be successful again.
I really don't understand this behavior. Can you please explain why this happens?
I heard that the PSDK compiler, unlike the Visual Studio compiler, is linking with system32\msvcrt.dll. I really don't understand what this means? Can you please explain what means: linking with a system DLL? And what's the difference between linking in Visual Studio and PSDK? Is there NOT system msvcrt.dll? I know that msvcr70.dll, msvcr80.dll, etc are not system. But what about NOT system msvcrt.dll?
Does linking with a system DLL depend on the version of Windows? Will anything change if I compile under Windows 10/11 (will this app work on older Windows 7/8)?