是否可以静态链接libcurl,libeay32和ssleay32?

时间:2015-06-05 17:48:46

标签: c++ visual-studio-2013 openssl libcurl

我正在使用Visual Studio 2013,我想静态使用libcurl(没有任何外部dll)。

我已经使用以下命令静态链接了libcurl:

nmake /f Makefile.vc mode=static WITH_SSL=static WITH_DEVEL=C:\OpenSSL-Win32 VC=12 ENABLE_SSPI=no ENABLE_IDN=no ENABLE_WINSSL=no DEBUG=no MACHINE=x86 GEN_PDB=no ENABLE_IPV6=yes

我已下载OpenSSL并将以下lib链接到我的项目:
C:\的OpenSSL的Win32 \ LIB \ VC \静\ zlibeay32MD.lib
C:\ OpenSSL的-的Win32 \ lib中\ VC \静态\ ssleay32MD.lib

一切似乎都很好,我可以成功编译我的项目。 但是当我运行程序时,我收到以下错误: http://i.stack.imgur.com/dNVMP.png

如果我将libeay32.dllssleay32.dll放在同一个程序文件夹中,它可以正常运行。

我不明白为什么它需要这些dll,我使用 WITH_SSL = static 选项来编译libcurl并且应该从静态库加载,对吗?

更新:
C / C ++ - >命令行:

/Yu"stdafx.h" /GS /GL /analyze- /W3 /Gy /Zc:wchar_t /I"C:\VisualCpp\Libraries\curl-7.42.1\builds\libcurl-vc12-x86-release-static-ssl-static-ipv6\include\curl" /I"C:\OpenSSL-Win32\\include\openssl" /Zi /Gm- /O2 /sdl /Fd"Release\vc120.pdb" /fp:precise /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "CURL_STATICLIB" /D "_UNICODE" /D "UNICODE" /errorReport:prompt /WX- /Zc:forScope /Gd /Oy- /Oi /MD /Fa"Release\" /EHsc /nologo /Fo"Release\" /Fp"Release\Launcher.pch"

链接器 - >命令行:

/OUT:"C:\VisualCpp\Launcher\Release\Launcher.exe" /MANIFEST /LTCG /NXCOMPAT /PDB:"C:\VisualCpp\Launcher\Release\Launcher.pdb" /DYNAMICBASE "libcurl_a.lib" "libeay32MD.lib" "ssleay32MD.lib" "ws2_32.lib" "wldap32.lib" "advapi32.lib" "kernel32.lib" "comdlg32.lib" "user32.lib" "gdi32.lib" "winspool.lib" "shell32.lib" "ole32.lib" "oleaut32.lib" "uuid.lib" "odbc32.lib" "odbccp32.lib" /MACHINE:X86 /NODEFAULTLIB:"libcmt.lib" /OPT:REF /SAFESEH /INCREMENTAL:NO /PGD:"C:\VisualCpp\Launcher\Release\Launcher.pgd" /SUBSYSTEM:WINDOWS /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /ManifestFile:"Release\Launcher.exe.intermediate.manifest" /OPT:ICF /ERRORREPORT:PROMPT /NOLOGO /TLBID:1 

0 个答案:

没有答案