我对curl很新。我需要在c ++中使用curl和ssl支持。 我用nmake编译了OpenSSL然后,我通过VS10项目将libcurl编译为SLL SUPPORT的静态库。编译工作,我试图建立一个小型控制台应用程序示例:这有效!
但是,当我尝试使用这些特定属性创建一个MFC项目时: MFC作为一个对话框,没有unicode,并在静态库中使用MFC。 这不起作用,我得到以下未解决的符号错误:
libcurl.lib(mprintf.obj) : error LNK2001: symbole externe non résolu __imp__fputc
1>libcurl.lib(tftp.obj) : error LNK2001: symbole externe non résolu __imp__memchr
1>libcurl.lib(http.obj) : error LNK2001: symbole externe non résolu __imp__memchr
1>libcurl.lib(userauth.obj) : error LNK2001: symbole externe non résolu __imp__memchr
1>libcurl.lib(file.obj) : error LNK2001: symbole externe non résolu __imp___fstat64
1>libcurl.lib(formdata.obj) : error LNK2001: symbole externe non résolu __imp___stat64
1>libcurl.lib(session.obj) : error LNK2001: symbole externe non résolu __imp___difftime64
1>libcurl.lib(kex.obj) : error LNK2001: symbole externe non résolu __imp___snprintf
1>libcurl.lib(knownhost.obj) : error LNK2001: symbole externe non résolu __imp___snprintf
1>libcurl.lib(scp.obj) : error LNK2001: symbole externe non résolu __imp___snprintf
1>libcurl.lib(misc.obj) : error LNK2001: symbole externe non résolu __imp___snprintf
1>libcurl.lib(transport.obj) : error LNK2001: symbole externe non résolu _imp___snprintf
1>libcurl.lib(channel.obj) : error LNK2001: symbole externe non résolu __imp___wassert
1>libcurl.lib(sftp.obj) : error LNK2001: symbole externe non résolu __imp___wassert
1>libcurl.lib(transport.obj) : error LNK2001: symbole externe non résolu __imp___wassert
1>libcurl.lib(userauth.obj) : error LNK2001: symbole externe non résolu __imp__rewind
1>libcurl.lib(misc.obj) : error LNK2001: symbole externe non résolu __imp__vsnprintf
提前致谢。
答案 0 :(得分:0)
检查出来:http://theetrain.ca/tech/?p=151
您可能忘记为curl库添加其他依赖项
答案 1 :(得分:0)
默认情况下,curl使用/MD
(dll)运行时库进行编译(这就是为什么你得到未解析的外部__imp__
前缀的原因。)
我假设您使用/MT
(静态链接的运行时)构建您的MFC项目。
您可以通过将构建控制台中的RTLIBCFG
环境变量设置为static
来构建具有静态运行时的curl,如下所示:
set RTLIBCFG=static
或者只是手动/MT
添加到编译器标志,/NODEFAULTLIB:MSVCRT.lib
添加到makefile中的链接标志,以防第一个建议不起作用。