文章目录
- 参考
小结
碰到了OpenSSL加入到在Visual Studio 2019中编译返回LNK2019错误,添加了缺失的库文件,解决了问题。
问题和解决
Error LNK2019
错误有类似以下返回:
在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 filesWhy does Visual Studio 2013 error on C4996?