文章目录

  • 小结
  • 问题和解决
    • 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<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl SimpleWeb::Crypto::Base64::encode(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > 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<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl SimpleWeb::Crypto::Base64::encode(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" (?encode@Base64@Crypto@SimpleWeb@@SA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AEBV45@@Z)

在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?

解决OpenSSL加入到在Visual Studio 2019中编译返回LNK2019错误相关推荐

  1. 在Visual Studio 2019中修改项目名

    在Visual Studio 2019中修改项目名 文章目录 在Visual Studio 2019中修改项目名 1.需求场景 2.操作步骤 2.1 重命名解决方案 2.2 重命名项目名 2.3 修改 ...

  2. 【错误记录】Visual Studio 2019 中运行 Unity C# 脚本时报错 ( 根据解决方案, 可能需要安装额外的组件才能获得 | .NET 桌面开发 | 使用 Unity 的游戏开发 )

    文章目录 一.报错信息 二.解决方案 三.Visual Studio 2019 中运行 Unity C# 脚本需要的组件 1..NET 桌面开发 2.使用 Unity 的游戏开发 一.报错信息 Vis ...

  3. 【Unity3D】Unity 脚本 ① ( 创建 C# 脚本 | Visual Studio 2019 中打开 C# 脚本 | 编译 C# 脚本 | 挂载 C# 脚本到游戏物体 | 运行脚本 )

    文章目录 一.创建 Unity 脚本 二.Visual Studio 2019 中打开 C# 脚本 三.编译 C# 脚本 四.挂载 C# 脚本到游戏物体 GameObject 1.添加组件方式 2.直 ...

  4. 【Unity3D】Unity 脚本 ② ( Visual Studio 2019 中的 Unity 编译环境配置 | Unity 编辑器关联外部 C# 脚本编辑器 Visual Studio )

    文章目录 一. Visual Studio 2019 中的 Unity 编译问题 二. Unity 编辑器中关联外部 C# 脚本编辑器 三. 设置游戏运行时脚本更新行为 一. Visual Studi ...

  5. Visual Studio 2019中查看变量的内存地址

    Visual Studio 2019中查看变量内存地址 变量所在行打断点 执行程序 打开内存显示窗口 输入取 &a 获得a的地址值 点击a的地址值拖动至内存显示窗口中,此时第一行显示的为变量 ...

  6. Visual Studio 2017在编译时出现错误E2512:功能测试宏的参数必须是简单标识符

    Visual Studio 2017在编译时出现错误E2512:功能测试宏的参数必须是简单标识符 问题描述: Visual Studio 2017在编译时出现错误E2512:功能测试宏的参数必须是简单 ...

  7. 在visual studio 2019中使用msvc2015

    1.配置visual studio中的qt 下载相应版本的qt插件,这里用的是 qt-vsaddin-msvc2017-2.7.0.vsix 插件下载地址:https://download.qt.io ...

  8. Tesseract OCR——Windows 10 + CMake-GUI + Visual Studio 2019下编译和使用解决方案

    基本概念 Tesseract OCR:Tesseract-OCR 引擎最先由HP实验室于1985年开始研发,至1995年时已经成为OCR业内最准确的三款识别引擎之一.然而,HP不久便决定放弃OCR业务 ...

  9. 汇编语言 + Visual Studio 2019——Visual Studio 2019 中汇编语言环境解决方案

    基本概念 MASM:Microsoft汇编程序(俗称MASM)是一种工业软件开发工具,已经由主要的操作系统供应商维护和更新了30多年.它从未被软化或折衷为对消费者友好的工具,并且被设计为供专业程序员用 ...

最新文章

  1. 中怎么构建ebug模式_自动挡中的“手自一体”,该怎么用?多少人把手动模式当成摆设?...
  2. clion 查看内容窗口_CLion精华笔记
  3. 【CyberSecurityLearning 45】PHP基础+变量、运算符、流程控制语句
  4. Kafka解惑之Old Producer(2)——Sync Analysis
  5. php对分数排序,php-MySQL @grouping结果按ID并按分数排序”问题
  6. Failed to issue method call: Unit mysql.service failed to load: No such file or directory解决的方式...
  7. Java中逗号运算符的使用
  8. 计算机组装与维护心得体会作文,《计算机维护与局域网建设》学习心得
  9. 获取 NodeJS 程序退出码
  10. 【丁丁历险记】ESP8266/ESP32做微信遥控语音识别
  11. linux卸载rpm包的命令,Linux RPM包安装、卸载和升级(rpm命令)
  12. CRMEB多商户1.7.1版本功能更新预告 预计12月更新
  13. white-space 与换行和空格的控制?
  14. 乔治城大学计算机科学专业,[转载]美国西北大学计算机科学研究生最新专业排名...
  15. 获取wifi密码信息(仅供学习使用,勿作他用)
  16. mongdb 鉴权失败,添加用户数据失败
  17. STM32单片机的电子密码锁设计
  18. android JavaMail报错:SendFailedException: No recipient addresses
  19. Rabbitmq安装以及入门
  20. 什么是JAVAweb?

热门文章

  1. i7 13650hx和i7 13700hx差距 酷睿i713650hx和13700hx对比
  2. arima基本原理_1 arima 模型理论.pdf
  3. 乐视android系统耗电量,乐视手机Max续航能力怎么样?待机时间怎么样?
  4. 启动win10组策略管理器gpedit.msc报错
  5. clover没有linux引导文件夹,clover引导安装时看不到硬盘
  6. Flask从入门到做出一个博客的大型教程(四)
  7. 杨元庆:联想的新目标是苹果
  8. day26:离散余弦变换
  9. C++ 多继承的二义性问题
  10. python必读十本书籍_机器学习和数据科学必读的10本免费在线电子书和书的详细介绍...