1. 启用 openssl
时编译问题:
1>libcrypto.lib(e_capi.obj) : error LNK2019: 无法解析的外部符号 __imp_CertOpenStore,该符号在函数 capi_open_store 中被引用
1>libcrypto.lib(e_capi.obj) : error LNK2019: 无法解析的外部符号 __imp_CertCloseStore,该符号在函数 capi_find_key 中被引用
1>libcrypto.lib(e_capi.obj) : error LNK2019: 无法解析的外部符号 __imp_CertEnumCertificatesInStore,该符号在函数 capi_find_cert 中被引用
1>libcrypto.lib(e_capi.obj) : error LNK2019: 无法解析的外部符号 __imp_CertFindCertificateInStore,该符号在函数 capi_find_cert 中被引用
1>libcrypto.lib(e_capi.obj) : error LNK2019: 无法解析的外部符号 __imp_CertDuplicateCertificateContext,该符号在函数 capi_load_ssl_client_cert 中被引用
1>libcrypto.lib(e_capi.obj) : error LNK2019: 无法解析的外部符号 __imp_CertFreeCertificateContext,该符号在函数 capi_dsa_free 中被引用
1>libcrypto.lib(e_capi.obj) : error LNK2019: 无法解析的外部符号 __imp_CertGetCertificateContextProperty,该符号在函数 capi_cert_get_fname 中被引用
原因
OpenSSL库使用了windows的一个密码学库: Crypt32
解决方案
在 项目属性 - 链接器 - 输入 - 附加依赖项 中加入: Crypt32.lib
即可
2. 引用 hv.h
头文件与microsoft的网络库冲突问题
原因
Windows.h和winsock2.h 对sockaddr这些结构体有重复定义、
解决
在 #include <windows.h>
前面定义一个宏:
#define WIN32_LEAN_AND_MEAN 1
#include <windows.h>