解决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<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错误相关推荐
- 在Visual Studio 2019中修改项目名
在Visual Studio 2019中修改项目名 文章目录 在Visual Studio 2019中修改项目名 1.需求场景 2.操作步骤 2.1 重命名解决方案 2.2 重命名项目名 2.3 修改 ...
- 【错误记录】Visual Studio 2019 中运行 Unity C# 脚本时报错 ( 根据解决方案, 可能需要安装额外的组件才能获得 | .NET 桌面开发 | 使用 Unity 的游戏开发 )
文章目录 一.报错信息 二.解决方案 三.Visual Studio 2019 中运行 Unity C# 脚本需要的组件 1..NET 桌面开发 2.使用 Unity 的游戏开发 一.报错信息 Vis ...
- 【Unity3D】Unity 脚本 ① ( 创建 C# 脚本 | Visual Studio 2019 中打开 C# 脚本 | 编译 C# 脚本 | 挂载 C# 脚本到游戏物体 | 运行脚本 )
文章目录 一.创建 Unity 脚本 二.Visual Studio 2019 中打开 C# 脚本 三.编译 C# 脚本 四.挂载 C# 脚本到游戏物体 GameObject 1.添加组件方式 2.直 ...
- 【Unity3D】Unity 脚本 ② ( Visual Studio 2019 中的 Unity 编译环境配置 | Unity 编辑器关联外部 C# 脚本编辑器 Visual Studio )
文章目录 一. Visual Studio 2019 中的 Unity 编译问题 二. Unity 编辑器中关联外部 C# 脚本编辑器 三. 设置游戏运行时脚本更新行为 一. Visual Studi ...
- Visual Studio 2019中查看变量的内存地址
Visual Studio 2019中查看变量内存地址 变量所在行打断点 执行程序 打开内存显示窗口 输入取 &a 获得a的地址值 点击a的地址值拖动至内存显示窗口中,此时第一行显示的为变量 ...
- Visual Studio 2017在编译时出现错误E2512:功能测试宏的参数必须是简单标识符
Visual Studio 2017在编译时出现错误E2512:功能测试宏的参数必须是简单标识符 问题描述: Visual Studio 2017在编译时出现错误E2512:功能测试宏的参数必须是简单 ...
- 在visual studio 2019中使用msvc2015
1.配置visual studio中的qt 下载相应版本的qt插件,这里用的是 qt-vsaddin-msvc2017-2.7.0.vsix 插件下载地址:https://download.qt.io ...
- Tesseract OCR——Windows 10 + CMake-GUI + Visual Studio 2019下编译和使用解决方案
基本概念 Tesseract OCR:Tesseract-OCR 引擎最先由HP实验室于1985年开始研发,至1995年时已经成为OCR业内最准确的三款识别引擎之一.然而,HP不久便决定放弃OCR业务 ...
- 汇编语言 + Visual Studio 2019——Visual Studio 2019 中汇编语言环境解决方案
基本概念 MASM:Microsoft汇编程序(俗称MASM)是一种工业软件开发工具,已经由主要的操作系统供应商维护和更新了30多年.它从未被软化或折衷为对消费者友好的工具,并且被设计为供专业程序员用 ...
最新文章
- 中怎么构建ebug模式_自动挡中的“手自一体”,该怎么用?多少人把手动模式当成摆设?...
- clion 查看内容窗口_CLion精华笔记
- 【CyberSecurityLearning 45】PHP基础+变量、运算符、流程控制语句
- Kafka解惑之Old Producer(2)——Sync Analysis
- php对分数排序,php-MySQL @grouping结果按ID并按分数排序”问题
- Failed to issue method call: Unit mysql.service failed to load: No such file or directory解决的方式...
- Java中逗号运算符的使用
- 计算机组装与维护心得体会作文,《计算机维护与局域网建设》学习心得
- 获取 NodeJS 程序退出码
- 【丁丁历险记】ESP8266/ESP32做微信遥控语音识别
- linux卸载rpm包的命令,Linux RPM包安装、卸载和升级(rpm命令)
- CRMEB多商户1.7.1版本功能更新预告 预计12月更新
- white-space 与换行和空格的控制?
- 乔治城大学计算机科学专业,[转载]美国西北大学计算机科学研究生最新专业排名...
- 获取wifi密码信息(仅供学习使用,勿作他用)
- mongdb 鉴权失败,添加用户数据失败
- STM32单片机的电子密码锁设计
- android JavaMail报错:SendFailedException: No recipient addresses
- Rabbitmq安装以及入门
- 什么是JAVAweb?
热门文章
- i7 13650hx和i7 13700hx差距 酷睿i713650hx和13700hx对比
- arima基本原理_1 arima 模型理论.pdf
- 乐视android系统耗电量,乐视手机Max续航能力怎么样?待机时间怎么样?
- 启动win10组策略管理器gpedit.msc报错
- clover没有linux引导文件夹,clover引导安装时看不到硬盘
- Flask从入门到做出一个博客的大型教程(四)
- 杨元庆:联想的新目标是苹果
- day26:离散余弦变换
- C++ 多继承的二义性问题
- python必读十本书籍_机器学习和数据科学必读的10本免费在线电子书和书的详细介绍...