链接openssl到Qt失败

Failed to link openssl to Qt

本文关键字:失败 Qt openssl 链接      更新时间:2023-10-16

我已经在linux上启动了一个Qtcreator项目。这个项目使用Openssl库来工作。因此,在我的。pro文件中,我添加了这些行:

LIBS    += -lssl
LIBS    += -lcrypto

所以在linux上它工作得很好。

但是,我必须在windows上继续我的项目。我必须用cygwin安装Openssl,我选择了这个包:"cygwin32-openssl-1.0.1e-1.tar"。bz2"因为我用32位编译。

我在我的program文件夹中创建了一个名为libs的子目录,并将三个openssl文件夹(bin, include和lib)放在我的"libs"目录中。

lib目录的内容为:

libcrypto.a
libcrypto.dll.a
libssl.a
libssl.dll.a
pkgconfig/libcrypto.pc
pkgconfig/libssl.pc
pkgconfig/openssl.pc

在bin目录我有2 .dll, cygcrypto-1.0.0.dll和cygssl-1.0.0.dll

我在我的。pro文件中添加了这些行:

LIBS    += -lssl
LIBS    += -lcrypto
LIBS    += -L"$$PWD/libs/openssl/lib/"
INCLUDEPATH += $$PWD/libs/openssl/include/

如果我将-L"$$PWD/libs/openssl/lib/"改为-L"$$PWD/libs/openssl/bin/",编译器将无法识别-lssl和-lcrypto选项。

QtCreator识别头文件(例如),当我编译时,没有发生错误。

但是当我启动程序时,它不工作,也没有出现错误。所以我在main函数的开头设置了断点,然后重新启动程序。之后,一个小窗口告诉我这个错误:

可执行文件失败:启动过程中程序退出,代码0xc0000135

我使用Qt 5.4.0和Mingw 32位

我不明白为什么它不起作用。你能帮我一下吗?谢谢你。

整个项目都需要使用cygwin,或者不使用cygwin。由于我假设您正在使用Visual Studio编译器进行编译,因此您需要使用不依赖于cygwin的OpenSSL构建。例如,来自Shining Light Productions的一个,它实际上是Windows的OpenSSL二进制提供商。