with gcc
我想构建一个使用Curl lib的DLL
。
在
$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
我收到以下警告(多次出现)
警告:.drectve` / manifestdependency:“type ='win32'name ='Microsoft.VC90.CRT'v ersion ='9.0.21022.8'processorArchitecture ='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
我还需要链接哪些来解决这些问题?
感谢。
答案 0 :(得分:3)
您需要链接其中一个bufferoverflow.lib库,
bufferoverflowU.lib 此库实现安全功能 可以在用户模式和中使用的cookie验证 使用Win32 API的应用程序。大多数应用程序链接到此 图书馆。
bufferoverflowK.lib 这个库实现了对a的检查 在操作系统的内核模式下工作的安全cookie。 必须链接在内核模式下运行的服务和子系统 到这个图书馆。
bufferoverflow.lib 此库实现 可用于安全性cookie验证的功能 用户模式。但是,bufferoverflow.lib不同于 bufferoverflowU.lib因为bufferoverflow.lib可以在服务中使用 以及不使用Win32 API的应用程序。
或者,您必须在没有/GS
编译器开关的情况下重建 curl ,
在Microsoft Visual Studio 2002中,一个名为“的新编译器开关” / GS“已经引入Microsoft Visual C ++编译器。何时 设置“/ GS”开关后,编译器会注入缓冲区溢出 检测编译代码中的代码。