需求
windows上通过ssh方式访问服务器。
编译环境
vs2019+Qt5.14.2
源码下载
git clone https://github.com/mardy/QSsh.git
编译
1)安装visual studio2019、Qt5.14.2、qt-vsaddin-msvc2019-2.4.3.vsix等软件;
2)使用vs2019打开qssh.pro文件;
3)编译。
- 编译错误1:无法解析的外部符号matchHostKey、insertHostKey。
1>sshkeyexchange.obj : error LNK2019: 无法解析的外部符号 "public: enum QSsh::SshHostKeyDatabase::KeyLookupResult __cdecl QSsh::SshHostKeyDatabase::matchHostKey(class QString const &,class QByteArray const &)const " (?matchHostKey@SshHostKeyDatabase@QSsh@@QEBA?AW4KeyLookupResult@12@AEBVQString@@AEBVQByteArray@@@Z),函数 "private: void __cdecl QSsh::Internal::SshKeyExchange::checkHostKey(class QByteArray const &)" (?checkHostKey@SshKeyExchange@Internal@QSsh@@AEAAXAEBVQByteArray@@@Z) 中引用了该符号
1>sshkeyexchange.obj : error LNK2019: 无法解析的外部符号 "public: void __cdecl QSsh::SshHostKeyDatabase::insertHostKey(class QString const &,class QByteArray const &)" (?insertHostKey@SshHostKeyDatabase@QSsh@@QEAAXAEBVQString@@AEBVQByteArray@@@Z),函数 "private: void __cdecl QSsh::Internal::SshKeyExchange::checkHostKey(class QByteArray const &)" (?checkHostKey@SshKeyExchange@Internal@QSsh@@AEAAXAEBVQByteArray@@@Z) 中引用了该符号
解决方案:
将src/sshhostkeydatabase.h、src/sshhostkeydatabase.cpp两个文件添加至工程。
- 编译错误2:无法解析的外部符号sshLog。
1>sshkeyexchange.obj : error LNK2019: 无法解析的外部符号 "class QLoggingCategory const & __cdecl QSsh::Internal::sshLog(void)" (?sshLog@Internal@QSsh@@YAAEBVQLoggingCategory@@XZ),函数 "public: bool __cdecl QSsh::Internal::SshKeyExchange::sendDhInitPacket(class QSsh::Internal::SshIncomingPacket const &)" (?sendDhInitPacket@SshKeyExchange@Internal@QSsh@@QEAA_NAEBVSshIncomingPacket@23@@Z) 中引用了该符号
解决方案:
将src/sshlogging_p.h、src/sshlogging.cpp两个文件添加至工程。
# 说明
QSSH工程中有大量的qCDebug打印,可选择性屏蔽。
- 生成
编译完成后,生成如下库:
使用
可参考:https://blog.youkuaiyun.com/qq_41673920/article/details/103687644