0

我对 curl 很陌生。我需要在具有 ssl 支持的 c++ 中使用 curl。我用 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

提前致谢。

4

1 回答 1

0

默认情况下,curl 使用/MD(dll) 运行时库进行编译(这就是为什么你会得到__imp__未解析外部的前缀)。

/MT我假设您使用(静态链接运行时)构建您的 MFC 项目。

RTLIBCFG您可以通过将构建控制台中的环境变量设置为 来构建具有静态运行时的 curl static,如下所示:

set RTLIBCFG=static

或者只是手动添加/MT到编译器标志和/NODEFAULTLIB:MSVCRT.lib生成文件中的链接标志,以防第一个建议不起作用。

于 2014-04-02T07:43:41.707 回答