【问题标题】:How to use OpenSSL on Windows? Compile error如何在 Windows 上使用 OpenSSL?编译错误
【发布时间】:2014-10-08 03:51:22
【问题描述】:

我有一个类似于 Openssl how to compile a simple program? 的问题,但我使用的是 Windows 7(因此编译 reentrant.c 的建议不起作用)。我有一个来自 GnuWin32 的 OpenSSL Windows 端口,在 Qt Creator 中我尝试构建项目。在我的 .pro 文件中,我输入了以下几行:

INCLUDEPATH += C:\gnuwin32\include
LIBS += -LC:\gnuwin32\bin -lssl32

但编译器仍然写:

undefined reference to `BIO_s_file'
undefined reference to `BIO_new'
undefined reference to `BIO_ctrl'
undefined reference to `PEM_read_bio_X509'
(...)
undefined reference to `EVP_PKEY_free'
collect2.exe:-1: błąd: error: ld returned 1 exit status

我做错了什么?

编辑: 有谁知道链接器有什么问题?包含标头,LIBS += -L C:\gnuwin32\bin -lssl32 在 .pro 文件中...

【问题讨论】:

  • 按这些确切名称的顺序与 -lssl 和 -lcrypto 以及 -lws2_32 和 -lgdi32 链接。现在确定为什么你有 -lssl32。它的末尾没有 32 afaik .. 除非你重命名它。
  • -lssl32 可能不正确。在 Windows 上,该库被命名为 libeay32.dll;它没有被命名为libssl32.dll
  • 谢谢!我使用了-leay32,它可以工作。但是我在gnuwin32/bin 目录中也有libssl32.dll,我没有重命名,所以它是什么?

标签: windows dll linker openssl


【解决方案1】:

我认为您需要在另一个 -L 参数之后找到 libssl32 所在的路径。另外我认为在 -L 之后您可能需要一个空格(我不是 100% 确定,但我知道空格会起作用)。

【讨论】:

  • 我尝试编写带空格、不带空格、带引号、不带引号的库路径 - 仍然是同样的错误。但我没有想到双“L”(这是你的意思,对吗?)。因此,当在 .pro 文件中为: LIBS += -LL C:\gnuwin32\bin -lssl32 我看到错误:找不到 C:\gnuwin32\bin: Permission denied ld 返回 1 exit status 这与此处描述的问题相同 - @ 987654321@,但仍然没有任何答案。
  • -L 条目是单一的和附加的,例如 gcc -LC:\windows\blah -LC:\path\to\openssl32 -lssl32 -lotherlib 你能发布更多的错误,所以我可以得到更好看?
  • 这是完整的错误,我只省略了几个类似的 undefined reference 到 OpenSSL 的功能。
猜你喜欢
  • 2017-02-21
  • 2011-02-14
  • 1970-01-01
  • 2011-03-15
  • 2014-04-30
  • 2016-04-17
  • 2018-04-09
  • 1970-01-01
  • 2012-06-15
相关资源
最近更新 更多