gcc链接器错误:未定义引用`__security_cookie'

use*_*683 5 dll linker gcc curl

gcc我想建立一个DLL,它采用了Curl库.

$gcc -shared -o GA_TestLibV11.dll GA_TestLibV11.o GA_TestLibV11.def curllib_static.lib

$ gcc -shared -o GA_TestLibV11.dll GA_TestLibV11.o GA_TestLibV11.def curllib_static.lib -llibws2_32
Run Code Online (Sandbox Code Playgroud)

我收到以下警告(多次出现)

警告:.drectve`/manifestdependency:"type ='win32'name ='Microsoft.VC90.CRT'v ersion ='9.0.21022.8'inverlerArchitecture ='x86'publicKeyToken ='1fc8b3b9a1e18e3 b'"/ DEFAULTLIB:"MSVCRT"/ DEFAULTLIB:"OLDNAMES"'未被发现

以及以下错误:

curllib_static.lib(./Release/easy.obj):(.text[_win32_init]+0x7): undefined reference to `__security_cookie'

curllib_static.lib(./Release/easy.obj):(.text[_win32_init]+0x41): undefined reference to `@__security_check_cookie@4'

c:/mingw/bin/../lib/gcc/mingw32/4.8.1/../../../../mingw32/bin/ld.exe: curllib_st
atic.lib(./Release/easy.obj): bad reloc address 0x41 in section `.text[_win32_in
it]'
collect2.exe: error: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)

还有什么可以链接来解决这些问题?

谢谢.

moc*_*ace 4

您将需要链接到 bufferoverflow.lib 库之一,

bufferoverflowU.lib 该库实现了安全 cookie 验证功能,可以在用户模式和使用 Win32 API 的应用程序中使用。大多数应用程序都链接到该库。

bufferoverflowK.lib 该库实现了在操作系统内核模式下工作的安全cookie的检查。在内核模式下运行的服务和子系统必须链接到该库。

bufferoverflow.lib 该库实现了可在用户模式下使用的安全 cookie 验证功能。但是,bufferoverflow.lib 与 bufferoverflowU.lib 不同,因为 bufferoverflow.lib 可以在不使用 Win32 API 的服务和应用程序中使用。

有关详细信息,请参阅当您使用 Win32 软件开发工具包 (SDK) 或 Windows Server 2003 Service Pack 1 的 Windows Server 2003 驱动程序开发工具包 (DDK) 生成源代码时,您可能会收到“链接器工具错误 LNK2001”错误消息

或者,您必须在没有编译器开关的情况下重建curl/GS

在 Microsoft Visual Studio 2002 中,Microsoft Visual C++ 编译器引入了一个名为“/GS”的新编译器开关。当设置“/GS”开关时,编译器会在编译后的代码中注入缓冲区溢出检测代码。