在MFC项目中包含Curl

时间:2013-04-10 07:21:57

标签: c++ curl mfc unresolved-external curlpp

我对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

提前致谢。

2 个答案:

答案 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中的链接标志,以防第一个建议不起作用。