如何在Visual Studio中使用OpenSSL

41

我正在尝试将我的用C编写的控制台应用程序移植到Visual Studio 2010。在Linux / Mac上,该应用程序运行良好,包括OpenSSL支持。

有人可以帮助我在Visual Studio项目中使用/链接OpenSSL库吗?

谢谢!


3
你安装了Win32 OpenSSL吗?如果没有,可以在这里下载:http://slproweb.com/products/Win32OpenSSL.html - Chris Gessler
它所携带的许可证是什么?我不确定它是否可以包含在商业产品中...任何想法都可以帮助。 - user435739
1
你手头有 OpenSSL Windows 库吗?当你尝试链接 OpenSSL 库时,你具体遇到了什么问题? - Jay
[SO]: 如何在Visual Studio Express 2012 Windows 7 x64中包含openssl - CristiFati
1
这并不是太宽泛。它有一个相当具体的解决方案。 - rustyx
4个回答

39

我知道这个问题很老!我自己也遇到了这个问题,以下是解决方案。

首先,您应该安装 (普通常规安装) openssl。(从 这里 下载)。

现在,在创建项目后,我引用下面的内容:

确保在项目属性页中设置了以下设置:

[C/C++ -> General -> Additional Include Directories] 值: 您机器上 OpenSSL 的包含目录 (例如 C:\openssl\include)

[Linker -> General -> Additional Library Directories] 值: 您 机器上 OpenSSL 的 lib 目录 (例如 C:\openssl\lib)

[Linker -> Input -> Additional Dependencies] 值: libeay32.lib

来源


嗨joker,你能否请解释一下安装过程。那个链接没有任何可运行的exe文件。我从github上克隆了,但现在卡住了。 - Noitidart
1
@Noitidart,您使用的操作系统是什么? - joker
4
在这里安装其中一个:https://slproweb.com/products/Win32OpenSSL.html 我已经使用过这种方法了。 - joker
1
我不是很确定这一点。我认为(可能)如果你将项目编译为发布版本,这将省去用户端安装库的需要。也就是说,如果我没错的话,在编译项目时,用户无需安装库。但我不是很确定。 - joker
感谢Joker的想法,我非常感激。 - Noitidart
显示剩余2条评论

15

添加与OpenSSL相关的头文件,并在下面添加以下头文件:

#include <winsock2.h>
#include <windows.h>

打开以下链接并下载预编译文件。

http://www.npcglib.org/~stathis/blog/precompiled-openssl/

提取并将文件夹保留在C盘中,使用readme_precompile.txt中的说明。

打开Visual C++项目,并按照下面给出的过程来包含和链接选项。

确保在项目属性页中设置了以下设置:

  • [C/C++ -> General -> Additional Include Directories]
    • 在您的计算机上的OpenSSL的include目录(例如C:\ openssl \ include)或(例如C:\ openssl \ include64)
  • [Linker -> General -> Additional Library Directories]
    • 在您的计算机上的OpenSSL的lib目录(例如C:\ openssl \ lib)或(例如C:\ openssl \ lib64)
  • [Linker -> Input -> Additional Dependencies]
    • ws2_32.lib
    • libsslMT.lib
    • Crypt32.lib
    • libcryptoMT.lib

1
“http://www.npcglib.org/~stathis/blog/precompiled-openssl/”现在似乎无法访问。 - chux - Reinstate Monica

4

4

这篇文章已经超过一年了,但我找不到答案,于是我自己摸索着解决了问题。我使用VS 11编译了openssl-1.0.1e:

我尝试使用git自带的PERL,但它无法工作,所以我不得不安装ActivePerl

这些信息来自Nitesh提供的链接

perl Configure VC-WIN64A no-asm

接下来是:

ms\do_win64a

根据 这篇文章,我编辑了 ms\ntdll.mak 文件并将 CC 修改为:
CC="c:\Program Files (x86)\Microsoft visual Studio 11.0\VC\bin\amd64\cl.exe"

最后:

nmake -f ms\ntdll.mak

我没有费心安装,只是将目录openssl-1.0.1e\out32dll添加到“配置属性” -> “链接器” -> “附加库目录”,将openssl-1.0.1e\inc32添加到“配置属性” -> “C/C++” -> “常规” -> “附加包含目录”,将libeay32.dll复制到路径中的某个位置,然后就可以使用了。看起来很正常。


1
这是“从源代码构建openssl”的方法,如果你只想编译它,获取二进制文件会更容易些。 - Mike Ounsworth

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接