没有简单的答案:) 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中建立”的INSTALL文件) 。
最后一点 - 由于libcurl对来自源代码的Windows编译的支持很差,我建议您重新考虑摆脱curllib.dll的想法。