我正在尝试在Win10上使用libssh在Visual Studio 2015中构建一个项目,但我没有运气让它工作。我觉得我在这里失去了理智。我要么完全消隐,要么错过了一些非常明显的东西。
我尝试使用https://red.libssh.org/projects/libssh/files文件部分中的安装程序libssh-0.7.2-msvc.exe。然后我将它链接到VS2015中的测试C ++项目。使用示例代码,我能够编译它:
#include <iostream>
#define LIBSSH_STATIC
#include <libssh/libssh.h>
int main() {
std::cout << "Starting libssh test" << std::endl;
ssh_session my_ssh_session = ssh_new();
if (my_ssh_session == NULL) {
std::cout << "Failed to initialize" << std::endl;
}
ssh_free(my_ssh_session);
return 0;
}
(注意:我根据我在初次搜索答案时看到的帖子尝试了#define LIBSSH_STATIC
和#define LIBSSH_STATIC 1
。我甚至尝试添加它到项目属性中的预处理器定义。)
如果我的项目设置为32位,我只能编译它,但我无法运行生成的可执行文件。这样做会导致错误:“代码执行无法继续,因为找不到ssh.dll。重新安装程序可能会解决此问题。”我静态地链接ssh.lib,所以我不确定为什么我甚至会收到这个错误。
所以我尝试将libssh自己编译为64位。它花了比我想象的更多的修补(我有一些zlib的问题,最后我只是省略,因为它是可选的)。我可以成功地将我的项目编译为64位可执行文件,但是再一次,我实际上无法运行它。我得到了关于ssh.dll丢失的相同错误。
为了尝试它,我删除了LIBSSH_STATIC定义并尝试仅链接到DLL。将ssh.dll从libssh发行版复制到我的程序文件夹并尝试运行它,我收到错误:“应用程序无法正确启动(0xc000007b)。单击确定关闭应用程序。”
我不确定我在这里缺少什么,但我确定它是愚蠢的,我在思考它。
libssh已安装到我的计算机上的G:\Libraries\libssh_0.7.2
。
配置属性&gt; VC ++目录&gt;包含目录
G:\Libraries\libssh_0.7.2\include;$(IncludePath)
配置属性&gt; VC ++目录&gt;图书馆目录
G:\Libraries\libssh_0.7.2\lib;$(LibraryPath)
配置属性&gt;链接器&gt;输入&gt;其他依赖性
ssh.lib;%(AdditionalDependencies)
答案 0 :(得分:1)
安装vkpkg
⊞ Win+X打开powershell
输入 vckpg
install libssh:x64-windows
集成到 Visual Studio:vcpkg 集成安装
然后您可以在 Visual Studio 中包含 <libssh.h>
。