【问题标题】:What is wrong with my libcrypto linking on Windows?我在 Windows 上的 libcrypto 链接有什么问题?
【发布时间】:2011-09-27 20:20:12
【问题描述】:

我正在尝试使用 Cygwin 和 Windows 将我的 c++ 程序与 libcrypto 库链接。

我的 .cc 文件中有这个

#include <openssl/dh.h>

我在 usr/include/openssl 中有头文件 dh.h

而且我在 /usr/lib/ 中有所需的文件(libeay32.dll 和 ssleay32.dll),但是,当我构建(使用 python 构建工具 node-waf)时,我收到诸如 undefined reference to _DH_new 之类的错误

我在构建脚本的 cxxflags 部分尝试了各种方法,现在看起来像这样:

ppp.cxxflags = ["-g", "-D_FILE_OFFSET_BITS=64", "-D_LARGEFILE_SOURCE", "-Wall", "-L/usr/lib", "-lssl","-llibeay32","-lssleay32"]

【问题讨论】:

  • It looks like a libcrypto.a is available -- 这对你的项目来说足够了吗?
  • 我相信,我有那个文件。但我正在使用构建系统“waf”,我不确定如何告诉链接器使用 libcrypto.a
  • 基本上我尝试使用 libcrypto.a,但没有任何运气(我不知道为什么),现在我正在尝试另一种方法。但是,如果您可以帮助静态链接 libcrypto.a,我愿意回到这种方法。
  • cygwin 做 .dll,而不是 .so。你有一些不是为 cygwin 构建的。
  • 啊哈。你是说我不能使用 libcrypto.a 或 licrypto.so 因为它们都不适合 Cygwin?我一直在怀疑这个,你能确认一下吗?

标签: c++ windows cygwin


【解决方案1】:

Libcrypto.so 是 Linux 的动态链接库。 根据 Windows 上的this 需要使用 libeay32.a 和 ssleay32.a。 如果这不起作用,您必须从 OpenSSL 源代码创建自己的库。

【讨论】:

  • 我需要 .a 文件吗?还是您认为我应该尝试构建 openssl?
  • .a 文件只是静态库。应该可以动态链接dll。
  • ppp.cxxflags = ["-g", "-D_FILE_OFFSET_BITS=64", "-D_LARGEFILE_SOURCE", "-Wall", "-L/usr/lib", "-lssl","-llibeay32","-lssleay32"]
  • 我需要告诉编译器每个 .dll 吗?
  • 你为什么说'如果那不起作用':为什么不呢? (它没有,但我想知道为什么?)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-07-30
  • 2018-08-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多