Включить Curl в проект MFC

Я новичок в curl. Мне нужно использовать curl в С++ с поддержкой ssl. Я скомпилировал OpenSSL с помощью nmake, а затем скомпилировал libcurl как статическую библиотеку с поддержкой SLL через проект VS10. Компиляция сработала, и я попытался создать небольшой пример консольного приложения: Это работает!

Но когда я пытаюсь создать проект MFC с этими специфическими свойствами: MFC как диалоговое окно, без юникода и с использованием 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

Заранее спасибо.


person user2264870    schedule 10.04.2013    source источник


Ответы (1)


По умолчанию curl компилируется с библиотекой времени выполнения /MD (dll) (поэтому вы получаете префикс __imp__ для неразрешенных внешних файлов).

Я предполагаю, что вы создаете свой проект MFC с помощью /MT (статически связанная среда выполнения).

Вы можете создать curl со статическим временем выполнения, установив переменную среды RTLIBCFG в консоли сборки на static, например так:

set RTLIBCFG=static

Или просто добавьте вручную /MT к флагам компилятора и /NODEFAULTLIB:MSVCRT.lib к флагам ссылок в make-файлах на случай, если первое предложение не сработает.

person Alexandru C.    schedule 02.04.2014