10

如何将 libssh 实现为我的编译器将识别的库?我正在使用 Visual Studio 2010 C++,并且我已经毫无问题地包含了 Boost 库,但是我使用 Boost 所做的过程很奇怪,我可以告诉 libssh 会有所不同。

我真的不想做一个 DLL 文件,我想要一个可执行文件,但是我知道 DLL 文件可以通过 .rc 脚本嵌入到可执行文件中。(然后提取并加载)

我从来不需要在我的任何项目中包含除 Boost 之外的库,我觉得我真的应该知道如何做到这一点。请注意这是 libssh 而不是 libssh2。谢谢。

4

4 回答 4

15

即使帖子很旧,我也有答案,也许对落在这里的人会有所帮助。

在 Visual Studio 2010 中实现 libssh。

您需要的不仅仅是一个库,还需要 3 个库来确保一切都能顺利编译。首先下载最后一个版本的libssh 在这之后你需要另外 2 个 dll 来允许编译没有问题:

  • libeay32.dll
  • zlib1.dll

对于第一个,它对我来说不是很好,所以我只使用了完整的 openssl 库 openssl-0.9.8k_WIN32.zip

下载这些文件后,将它们放入 Visual Studio 中的正确位置。

  • C:\Program 文件 (x86)\Microsoft Visual Studio 10.0\VC

打开语言 C -> VC 的 Visual Studio 然后:

  • 复制包含C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include的文件夹,粘贴文件夹libssh\include(包含所有 .h 文件)
  • 将文件ssh.lib复制到C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\lib
  • 复制ssh.dll C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin

将 libeay32.dll 和 zlib1.dll 复制到 bin 文件夹中。或者,如果您下载了我推荐的 openssl,那么您只需对 lib ssh 执行相同的过程,只是不要忘记将 .exe 文件也复制到带有 dll 的 bin 文件夹中。

之后还没有完成,您必须将库链接到项目的编译器中。

Project -> projectName properties 打开一个带有属性的窗口,然后转到 -> Configuration Properties -> Linker -> input -> Additional Dependencies

现在将以下库添加到依赖项中

;ssh.lib;ssleay32.lib;libeay32.lib;

然后它工作得很好

我希望它可以帮助到这里的人:)

于 2012-12-02T04:05:48.123 回答
2

标准的 Windows 安装程序不附带静态库。

重要提示无论如何,您最终都会得到动态链接的 openssl(zlib 可选)。你确定要这个吗?

如果你这样做,你需要

可选:-libz >= 1.2

  1. 下载源压缩包,
  2. 创建一个 out-of-sourcetree 构建目录,
  3. 开始cmake-gui,调整
    • 选择源和构建目录
    • 单击配置(例如我选择了 VS2010 Win64 构建文件)
    • 打开 VStudio,调整并构建为静态库(而不是 DLL)

希望这可以帮助您入门。

于 2011-11-20T20:58:06.693 回答
1

您可以在 Windows 上轻松创建静态库。只需在 cmake 配置步骤中将 WITH_STATIC_LIB 设置为 ON。

注意:libssh 在 LGPL 下获得许可。

于 2011-11-21T14:12:47.587 回答
0

此外,请确保使用 libssh 版本-0.5.0 或更早版本来构建 VS2010 应用程序,因为较新的 libssh 版本需要 VS2012。

于 2015-04-27T03:37:05.703 回答