На этот вопрос нет простого ответа :) Libcurl зависит от сторонних библиотек (это зависит от используемого вами двоичного дистрибутива). По мере того, как вы избавляетесь от DLL, вам придется вручную связываться с соответствующими третьими сторонами.
Итак, во-первых, вы не должны ссылаться на libcurl.lib, так как он привязывает вас к DLL, чего вы не хотите.
Второй момент - когда вы устанавливаете ссылку на libcurl_static.lib, тогда (как упоминалось выше) вам также придется связывать с библиотеками, от которых это зависит. Простой способ сделать это - сделать что-то вроде этого:
#if defined CURL_STATICLIB
#if defined _DEBUG
#pragma comment(lib, "libcurl-7.19.3-win32-ssl-msvc\\lib\\Debug\\curllib_static.lib")
#else
#pragma comment(lib, "libcurl-7.19.3-win32-ssl-msvc\\lib\\Release\\curllib_static.lib")
#endif
#pragma comment(lib, "ws2_32.lib")
#pragma comment(lib, "libcurl-7.19.3-win32-ssl-msvc\\libeay32.lib")
#pragma comment(lib, "libcurl-7.19.3-win32-ssl-msvc\\openldap.lib")
#pragma comment(lib, "libcurl-7.19.3-win32-ssl-msvc\\ssleay32.lib")
#endif
Но так - вы получите еще три зависимости. В качестве альтернативы вы можете найти способ связать с ними статически, но это другая история.
В качестве другой альтернативы - вы можете перестроить libcurl_static.lib из исходников после отключения всех функций, которые вам не нужны, тем самым удалив нежелательные зависимости (как описано в разделе «Отключение определенных протоколов в сборках Win32 em > "файла INSTALL).
И последнее: так как libcurl плохо поддерживает компиляцию Windows из исходных текстов, я бы порекомендовал вам вернуться к идее избавиться от curllib.dll.
person
Andrey
schedule
05.08.2010