zoukankan      html  css  js  c++  java
  • 编译静态的 支持https协议的 libcurl 库无法加载问题

    下载libcurl的源码,打开lib文件夹下项目,编译为静态链接库。

    在编译的时候出现问题如下:

    注:以前在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复制进去(注意不要丢了";")

    编译报错内容:

     
    1>libcrypto.lib(e_capi.obj) : error LNK2001: 无法解析的外部符号 __imp__CertFreeCertificateContext@4
    1>libcrypto.lib(e_capi.obj) : error LNK2001: 无法解析的外部符号 __imp__CertGetCertificateContextProperty@16
    1>libcrypto.lib(e_capi.obj) : error LNK2001: 无法解析的外部符号 __imp__CertOpenStore@20
    1>libcrypto.lib(e_capi.obj) : error LNK2001: 无法解析的外部符号 __imp__CertFindCertificateInStore@24
    1>libcrypto.lib(e_capi.obj) : error LNK2001: 无法解析的外部符号 __imp__CertEnumCertificatesInStore@8
    1>libcrypto.lib(e_capi.obj) : error LNK2001: 无法解析的外部符号 __imp__CertCloseStore@8
    1>libcrypto.lib(e_capi.obj) : error LNK2001: 无法解析的外部符号 __imp__CertDuplicateCertificateContext@4
    1>D:codeopensslbaseappReleasePosCipherTest.exe : fatal error LNK1120: 7 个无法解析的外部命令
    1>


    这个错误是因为openssl库使用了windows的一个密码学库: Crypt32

    只要在 项目属性 - 链接器 - 输入 - 附加依赖项 中加入: Crypt32.lib 即可。

  • 相关阅读:
    iOS使用自签名证书实现HTTPS请求
    DB操作-用批处理执行Sql语句
    SSL通信-忽略证书认证错误
    oracle 19c awr 丢失 i/o信息
    this.$route.query刷新后类型改变
    wx.navigateTo在app.js中偶发性失效
    微信小程序new Date()转换日期格式时iphonex为NaN
    下载cnpm成功,cnpm -v却不识别
    element-ui的表单验证如何清除校验提示语
    5. 最长回文子串(动态规划算法)
  • 原文地址:https://www.cnblogs.com/xzh1993/p/14985409.html
Copyright © 2011-2022 走看看