为什么openssl / ssl.h只包含相对路径?

时间:2013-12-31 06:31:14

标签: c openssl visual-studio-2013

我通过执行以下操作使用MSVC ++ 2013 Express编译器构建了OpenSSL:

  • here安装ActivePerl 5.16.3。
  • 抓取openssl-1.0.1e.tar.gz并将其解压缩为C:\OpenSSL\Win64
  • 打开“VS2013 x64交叉工具命令提示符”和cd - 我已解压缩档案的目录。
  • 运行以下命令:

    perl Configure VC-WIN64A
    ms\do_win64a
    nmake -f ms\ntdll.mak

这完成没有错误(构建了正确的DLL)。然而,发生了一些非常奇怪的事情。如果我打开openssl/ssl.h,则文件内容为:

../../ssl/ssl.h

由于这显然不是有效的C / C ++,我无法编译任何依赖于OpenSSL头的应用程序,因为上面的问题。我做错了什么?

2 个答案:

答案 0 :(得分:2)

duskwuffcomment确实是正确的。问题是7-Zip没有正确提取存档中的符号链接。解决方案是下载GnuWin32's tar command line utility并使用它来提取存档:

tar -xvf openssl-1.0.1e.tar.gz

答案 1 :(得分:1)

openssl/ssl.h不是这种情况。这就是我看到的几乎所有文件的情况。

我猜这个信息是在构建OpenSSL时使用的,以便在makefile中提到的include文件夹中生成包含文件(对于Windows,它是nt.mak或ntdll.mak)。

如果您生成或构建库,您将在日志中看到头文件正被复制到makefile中提到的文件夹,在那里您将找到看起来像有效C头文件的头文件。实际上你使用那些生成的头文件,而不是这个头文件。

它看起来像是一个用于生成头文件的模板。