致命错误:libssh2.h:没有这样的文件或目录

时间:2018-01-30 10:17:59

标签: c++ c

到目前为止,我还没有C专家,即使解决方案是正确的,我也看不到它。现在已经尝试了2天了,我想我已经尽力了。

规格: Win7 x64, 编译器MinGW和 CMake并运行

要使用我在桌面下载文件夹中发出的编译器:cmake -G "MinGW Makefiles" 之后,在我所做的同一个文件夹中:cmake --build .

结束于100%,在我看来没有任何错误:

[100%] Linking C executable test_keyboard_interactive_auth_fails_with_wrong_response.exe [100%] Build target test_keyboard_interactive_auth_fails_with_wrong_response

现在我的代码非常简单,我只是想让它工作但是在标题上失败了。我正在学习本教程http://api.libssh.org/master/libssh_tutorial.html,甚至无法使第一页工作。

我记得的标题是:

#include <libssh2.h> #include <libssh/libssh.h> #include <libssh.h>

我得到任何标题的“没有这样的文件或目录”。

在家里,我设法做了一些不同的事情:将libssh.h库及其文件手动添加到我正在处理的文件夹中,并将标题更改为#include "libssh.h" 在那之后我不会得到那个错误,但是会引发另一个错误,例如“对ssh_new的未定义引用”或类似的东西,现在不能记住,但可以在以后更新。

我将不胜感激任何帮助。我不介意从Linux编译,如果它会更容易,但我的目标是为Windows(最初)和我自己创建一个ssh服务器和ssh客户端 - 遵循该教程或另一个。

为每个人欢呼。

1 个答案:

答案 0 :(得分:0)

两个问题:

  • 您的编译器无法找到头文件 - 您可能没有告诉在哪里查找。
  • 您显然没有将您的程序与libssh链接,这就是您获得“未定义引用”的原因。

您应该告诉您的visual studio它应该在libssh安装的include目录中查找头文件,其次,它应该将您的程序与libssh链接。

有很多方法可以达到目的,最普遍的方法是使用构建系统或生成器,如CMake(或任何其他的 - 有很多!)但当然你也可以简单地指出你的视觉工作室到正确的位置。

如果使用库,则需要访问相应的头文件,并且需要链接到库。如果您告诉编译器文件夹是系统文件夹,那么头文件可以包含尖括号(例如include <myheader.h>),否则您将它们包含在引号中(例如include "myheader.h")。