转自http://blog.csdn.net/varding/article/details/5329023
今天准备写个简单的http页面访问程序,以前在vc2005下用过就把代码搬过来了
因为我现在改用了vc2008因此需要重新编译lib
以前用命令行nmake编译成dll,今天偷懒直接进入lib目录用vc2008打开vc6libcurl.dsw
生成->批生成 选择了lib debug和lib release(静态链接不用带dll了)
在编译的时候出现问题如下:
注:以前在vc2005下用mfc工程并且libcurl用的dll方式没问题,这次vc2008用的sdk并且libcurl用的静态编译,也不知道什么问题引起的
HttpWebRequest.obj : error LNK2001: 无法解析的外部符号 __imp__curl_slist_free_all
1>HttpWebRequest.obj : error LNK2001: 无法解析的外部符号 __imp__curl_easy_cleanup
1>HttpWebRequest.obj : error LNK2001: 无法解析的外部符号 __imp__curl_easy_getinfo
1>HttpWebRequest.obj : error LNK2001: 无法解析的外部符号 __imp__curl_easy_setopt
1>HttpWebRequest.obj : error LNK2001: 无法解析的外部符号 __imp__curl_slist_append
1>HttpWebRequest.obj : error LNK2001: 无法解析的外部符号 __imp__curl_easy_init
1>HttpWebRequest.obj : error LNK2001: 无法解析的外部符号 __imp__curl_global_init
1>HttpWebRequest.obj : error LNK2001: 无法解析的外部符号 __imp__curl_easy_perform
上网查了好久找到了这个链接:
http://bobobobo.wordpress.com/2008/11/08/working-with-curl-getting-started-the-easy-way-on-win32/终于解决了问题
具体步骤就是:
1、给工程添加依赖的库:项目->属性->链接器->输入->附加依赖项,把libcurl.lib ws2_32.lib winmm.lib wldap32.lib添加进去
注意,debug配置用libcurld.lib
2、加入预编译选项:项目->属性->c/c++ ->预处理器->预处理器,把 ;BUILDING_LIBCURL;HTTP_ONLY复制进去(注意不要丢了";")
问题解决!不过我还是不知道步骤二的原因...谁知道的麻烦留言说下,谢谢!
另外说一下,使用BUILDING_LIBCURL是因为这编译CURL静态库的LIB预编译宏,HTTP_ONLY估计是楼主只想使用HTTP