2014-02-07 301 views
2

with gcc我想構建一個使用Curl庫的DLLgcc鏈接器錯誤:undefined reference to __security_cookie

$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:「類型= 'win32的' 名字='Microsoft.VC90。 CRT」 v 版爲= '9.0.21022.8' ProcessorArchitecture用於= '86' 公鑰= '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 `@[email protected]' 

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

你需要用bufferoverflow.lib庫的一個鏈接,

bufferoverflowU.lib This library implements functionality for security cookie verification that can be used in the user mode and in applications that use the Win32 API. Most applications link to this library.

bufferoverflowK.lib This library implements the check of a security cookie that works in the kernel mode of the operating system. Services and subsystems that run in the kernel mode have to be linked to this library.

bufferoverflow.lib This library implements functionality for security cookie verification that can be used in the user mode. However, bufferoverflow.lib is different from bufferoverflowU.lib because bufferoverflow.lib can be used in services and in applications that do not use the Win32 API.

多見於You may receive the "Linker tools error LNK2001" error messages when you build source code by using the Win32 Software Development Kit (SDK) or the Windows Server 2003 Driver Development Kit (DDK) for Windows Server 2003 Service Pack 1

或者,你將不得不重建捲曲沒有/GS編譯器開關,

In Microsoft Visual Studio 2002, a new compiler switch that is named " /GS" has been introduced to the Microsoft Visual C++ compiler. When the " /GS" switch is set, the compiler injects buffer overrun detection code in the compiled code.

相關問題