码农知识堂 - 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?

  • 相关阅读:
    Hive的常用内置函数
    通过宏将父类protected函数在子类中提升为public
    第六篇:常用Linux命令
    AdsPower RPA一些编写思路(进阶)
    笔试强训第九天
    springboot-综合案例
    【iOS】单例模式
    DEFORMABLE DETR:用于端到端对象检测的可变形Transformer
    [附源码]SSM计算机毕业设计疫情状态下病房管理平台JAVA
    kafka
  • 原文地址:https://blog.csdn.net/scruffybear/article/details/126300233
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号