首先,让我首先说我已经阅读了每个帖子,链接,回答等我可以发现指向Visual Studio / C ++中的链接/外部符号错误。话虽如此,以下是我得到的27个错误:
1>SecureSocket.obj : error LNK2019: unresolved external symbol CRYPTO_free referenced in function "private: void __cdecl SecureSocket::showCertificate(void)" (?showCertificate@SecureSocket@@AEAAXXZ)
1>SecureSocket.obj : error LNK2019: unresolved external symbol OPENSSL_add_all_algorithms_noconf referenced in function "private: void __cdecl SecureSocket::initContext(bool)" (?initContext@SecureSocket@@AEAAX_N@Z)
1>SecureSocket.obj : error LNK2019: unresolved external symbol X509_free referenced in function "private: void __cdecl SecureSocket::showCertificate(void)" (?showCertificate@SecureSocket@@AEAAXXZ)
1>SecureSocket.obj : error LNK2019: unresolved external symbol X509_NAME_oneline referenced in function "private: void __cdecl SecureSocket::showCertificate(void)" (?showCertificate@SecureSocket@@AEAAXXZ)
1>SecureSocket.obj : error LNK2019: unresolved external symbol X509_get_subject_name referenced in function "private: void __cdecl SecureSocket::showCertificate(void)" (?showCertificate@SecureSocket@@AEAAXXZ)
1>SecureSocket.obj : error LNK2019: unresolved external symbol SSL_CTX_new referenced in function "private: void __cdecl SecureSocket::initContext(bool)" (?initContext@SecureSocket@@AEAAX_N@Z)
1>SecureSocket.obj : error LNK2019: unresolved external symbol SSL_CTX_free referenced in function "public: virtual __cdecl SecureSocket::~SecureSocket(void)" (??1SecureSocket@@UEAA@XZ)
1>SecureSocket.obj : error LNK2019: unresolved external symbol SSL_set_fd referenced in function "private: bool __cdecl SecureSocket::secureAccept(int)" (?secureAccept@SecureSocket@@AEAA_NH@Z)
1>SecureSocket.obj : error LNK2019: unresolved external symbol SSL_CTX_use_PrivateKey_file referenced in function "public: void __cdecl SecureSocket::loadCertificates(char const *)" (?loadCertificates@SecureSocket@@QEAAXPEBD@Z)
1>SecureSocket.obj : error LNK2019: unresolved external symbol SSL_CTX_use_certificate_file referenced in function "public: void __cdecl SecureSocket::loadCertificates(char const *)" (?loadCertificates@SecureSocket@@QEAAXPEBD@Z)
1>SecureSocket.obj : error LNK2019: unresolved external symbol SSL_load_error_strings referenced in function "private: void __cdecl SecureSocket::initContext(bool)" (?initContext@SecureSocket@@AEAAX_N@Z)
1>SecureSocket.obj : error LNK2019: unresolved external symbol SSL_get_peer_certificate referenced in function "private: void __cdecl SecureSocket::showCertificate(void)" (?showCertificate@SecureSocket@@AEAAXXZ)
1>SecureSocket.obj : error LNK2019: unresolved external symbol SSL_CTX_check_private_key referenced in function "public: void __cdecl SecureSocket::loadCertificates(char const *)" (?loadCertificates@SecureSocket@@QEAAXPEBD@Z)
1>SecureSocket.obj : error LNK2019: unresolved external symbol SSL_new referenced in function "private: void __cdecl SecureSocket::createSSL(void)" (?createSSL@SecureSocket@@AEAAXXZ)
1>SecureSocket.obj : error LNK2019: unresolved external symbol SSL_free referenced in function "public: virtual __cdecl SecureSocket::~SecureSocket(void)" (??1SecureSocket@@UEAA@XZ)
1>SecureSocket.obj : error LNK2019: unresolved external symbol SSL_accept referenced in function "private: bool __cdecl SecureSocket::secureAccept(int)" (?secureAccept@SecureSocket@@AEAA_NH@Z)
1>SecureSocket.obj : error LNK2019: unresolved external symbol SSL_connect referenced in function "private: bool __cdecl SecureSocket::secureConnect(int)" (?secureConnect@SecureSocket@@AEAA_NH@Z)
1>SecureSocket.obj : error LNK2019: unresolved external symbol SSL_read referenced in function "public: virtual unsigned int __cdecl SecureSocket::secureRead(void *,unsigned int)" (?secureRead@SecureSocket@@UEAAIPEAXI@Z)
1>SecureSocket.obj : error LNK2019: unresolved external symbol SSL_write referenced in function "public: virtual unsigned int __cdecl SecureSocket::secureWrite(void const *,unsigned int)" (?secureWrite@SecureSocket@@UEAAIPEBXI@Z)
1>SecureSocket.obj : error LNK2019: unresolved external symbol SSL_get_error referenced in function "private: void __cdecl SecureSocket::checkResult(int,bool &,bool &)" (?checkResult@SecureSocket@@AEAAXHAEA_N0@Z)
1>SecureSocket.obj : error LNK2019: unresolved external symbol SSLv23_server_method referenced in function "private: void __cdecl SecureSocket::initContext(bool)" (?initContext@SecureSocket@@AEAAX_N@Z)
1>SecureSocket.obj : error LNK2019: unresolved external symbol SSLv23_client_method referenced in function "private: void __cdecl SecureSocket::initContext(bool)" (?initContext@SecureSocket@@AEAAX_N@Z)
1>SecureSocket.obj : error LNK2019: unresolved external symbol SSL_shutdown referenced in function "public: virtual __cdecl SecureSocket::~SecureSocket(void)" (??1SecureSocket@@UEAA@XZ)
1>SecureSocket.obj : error LNK2019: unresolved external symbol SSL_library_init referenced in function "private: void __cdecl SecureSocket::initContext(bool)" (?initContext@SecureSocket@@AEAAX_N@Z)
1>SecureSocket.obj : error LNK2019: unresolved external symbol ERR_get_error referenced in function "private: class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl SecureSocket::getError(void)" (?getError@SecureSocket@@AEAA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ)
1>SecureSocket.obj : error LNK2019: unresolved external symbol ERR_error_string_n referenced in function "private: class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl SecureSocket::getError(void)" (?getError@SecureSocket@@AEAA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ)
1>C:\Users\ME\Downloads\synergy-master\synergy-master\lib\MinSizeRel\ns.dll : fatal error LNK1120: 26 unresolved externals
一些背景知识:我已经从他们的Synergy下载了GitHub并构建了它而没有错误。建立它需要少量的黑客攻击,因为他们没有正式支持Visual Studio 2013,但并不过分困难。我还构建了使用最新的Qt而不是他们在网站上提供的Qt(2010)我还使用了来自SLProWeb的32位完整版的OpenSSL。
无论如何,我在代码中清除了一两个小错误,并尝试先从命令行编译它,然后用VS GUI编译。两者都吐出了上面显示的27个错误。正如我所说的那样,我一直在高低搜索,试图弄清楚我做错了什么,但最终没有发现任何问题。我将ssleay32.lib和libeay32.lib及其.dll复制到/ ext / openssl / out32dll文件夹中,Synergy看起来没有用,所以我手动指向了链接器附加的库目录。将其添加到其他包含,并将两个.lib添加到Input&gt; Additional Dependencies。仍然没有好处。
在最后的努力中,我将其添加到顶部:
#pragma comment(lib, "libeay32.lib")
#pragma comment(lib, "ssleay32.lib")
#pragma comment(lib, "libeay32MD.lib")
#pragma comment(lib, "libeay32MDd.lib")
#pragma comment(lib, "libeay32MT.lib")
#pragma comment(lib, "libeay32MTd.lib")
#pragma comment(lib, "ssleay32MD.lib")
#pragma comment(lib, "ssleay32MDd.lib")
#pragma comment(lib, "ssleay32MT.lib")
#pragma comment(lib, "ssleay32MTd.lib")
同时还将其余的lib复制到out32dll文件夹中。这证明它知道存在的文件,但仍然拒绝解决外部符号问题。
对我而言,看起来它并没有正确加载libeay32.lib,它包含编译器抱怨的OpenSSL的加密部分....