码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 解决OpenSSL加入到在Visual Studio 2019中编译返回LNK2019错误


    文章目录

    • 小结
    • 问题和解决
      • Error LNK2019
      • Error LNK1104
      • Warning C4996
    • 参考

    小结

    碰到了OpenSSL加入到在Visual Studio 2019中编译返回LNK2019错误,添加了缺失的库文件,解决了问题。

    问题和解决

    Error LNK2019

    错误有类似以下返回:

    Severity	Code	Description	Project	File	Line	Suppression State
    Error	LNK2019	unresolved external symbol _BUF_MEM_new referenced in function "public: static class std::basic_string,class std::allocator > __cdecl SimpleWeb::Crypto::Base64::encode(class std::basic_string,class std::allocator > const &)" (?encode@Base64@Crypto@SimpleWeb@@SA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@ABV45@@Z)
    Error	LNK2019	unresolved external symbol BIO_ctrl referenced in function "public: static class std::basic_string,class std::allocator > __cdecl SimpleWeb::Crypto::Base64::encode(class std::basic_string,class std::allocator > const &)" (?encode@Base64@Crypto@SimpleWeb@@SA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AEBV45@@Z)
    
    • 1
    • 2
    • 3

    在Visual Studio 2019中编译返回LNK2019错误这个问题比较难解决,根据网上经验,尝试了多种解决办法都没有用。
    大体有三种解决思路,如下:

    • 函数只声明了没进行定义
      仔细检查了项目的文件,并没有发现没有定义的情况。
    • 编译平台没有选对
      尝试更改了X86和X64的平台,并没有解决问题。
    • 相应的库没有添加到工程中来
      看来看去也看不出具体是哪个库缺失,根据多方查找验证,发现应该是与OpenSSL有关的库。

    尝试了在工程属性–> C/C++ --> Code Generation --> Runtime Library进行更改:

    • Multi-threaded (/MT)
    • Multi-threaded Debug (/MTd)
    • Multi-threaded DLL (/MD)
    • Multi-threaded Debug DLL (/MDd)
      以上四个选项进行了切换,发现都不行。

    参考:Visual Studio 2019配置OpenSSL 3.0开发环境

    在工程属性–> Linker --> Input --> Additional Dependencies添加以下库文件:

    • openssl.lib
    • libcrypto.lib
    • libssl.lib
      问题解决。
      我先前安装了Win64OpenSSL-3_0_5.msi,工程文件里都添加了包含目录和库目录,但是还是要在以上设置里添加这三个库。

    Error LNK1104

    在工程属性–> C/C++ --> Code Generation --> Runtime Library进行更改的时候,会报LNK1104的错误。

    • Multi-threaded (/MT)
    • Multi-threaded Debug (/MTd)
    • Multi-threaded DLL (/MD)
    • Multi-threaded Debug DLL (/MDd)

    LNK1104 cannot open file 'libboost_date_time-vc142-mt-sgd-x64-1_70.lib',实际在目录里是有libboost_date_time-vc142-mt-gd-x64-1_70.lib,少了个s, 运行库需要的库还不一样,如果拷贝一份,再进行改名,加上个s, 也是能编译的。

    Warning C4996

    有关C4996警告,已经设置了project properties -> Configuration Properties -> C/C++ -> General -> SDL checks -> No,还是不行。

    直接把#pragma warning(disable : 4996)放在代码前面进行了屏蔽。

    最后,直接忽略了warning C4267: 'argument': conversion from 'size_t' to 'int', possible loss of data。

    参考

    Visual Studio 2019配置OpenSSL 3.0开发环境
    Stack Overflow: LNK1104 cannot open file ‘libboost_log-vc142-mt-gd-x64-1_72.lib’?
    VS2012 error C2019, error link2019:无法解析的外部符号
    【error LNK2019: unresolved external symbol】问题解决方案
    Error LNK2019:Unresolved External Symbol 的解决方案
    Unresolved external symbol in object files
    Why does Visual Studio 2013 error on C4996?

  • 相关阅读:
    涂鸦Wi-Fi&BLE SoC开发幻彩灯带
    二分查找——34. 在排序数组中查找元素的第一个和最后一个位置
    谷歌浏览器Chrome 100即将发布,但可能无法正常使用?
    Jenkins教程—构建多分支流水线项目
    永磁同步电机转子位置估算专题——正交锁相环
    Docker网络介绍
    android开发电子书,android基础编程
    CAD进阶练习(四)
    centos下gmssl编译
    【系列】经典算法题 :排序算法空间
  • 原文地址:https://blog.csdn.net/scruffybear/article/details/126300233
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号