When using the Intel® C++/Fortran Compiler for Intel® Itanium® architecture or Intel® 64 with the Microsoft* Windows* Server 2003 with Service Pack 1 SDK - RC1 (Build 1289), you may run into the following linker error:
LIBC.lib(a_str.obj) : error LNK2001: unresolved external symbol __security_cookie
The work-around is below:
- link with bufferoverflowU.lib: This library implements functionality for security cookie verification that can be used in the user mode and in applications that use Win32 API. Most of applications will link to this library.
>>icl hello.c bufferoverflowU.lib
- link with bufferoverflowK.lib: This library implements check of a security cookie that works in the kernel mode of the OS. Services and subsystems that run in the kernel mode should be linked to this library.
>>icl hello.c bufferoverflowK.lib
- link with bufferoverflow.lib: This library implements functionality for security cookie verification that can be used in the user mode. However it is different from bufferoverflowU.lib because it can be used in services and applications that do not use Win32 API.
>>icl hello.c bufferoverflow.lib
- Use /MD
>> icl hello.c /MD
Use Visual C++* 2005 for your C Runtime Libraries which have the security cookie verification built in.
In the Microsoft Windows Server 2003 with Service Pack 1 SDK - RC1 (Build 1289) or newer, the CRT (C Runtime Libraries: LIBC.LIB, LIBCMT.LIB) has the Security Checks Enabled - this requires the linking of an additional library (bufferoverflowX.lib) to resolve those external APIs. The exact name of the library depends on the kind of application you are developing.
Note: The 9.1 and newer release of the Intel® C++/Fortran Compiler for Windows* will automatically link bufferoverflowU.lib at default or if /MT (default) is specified.