无法将openssl链接到Qt

时间:2015-08-30 10:03:43

标签: c++ windows qt openssl

我已经在Linux上用Qtcreator开始了一个项目。该项目使用Openssl库来工作。 所以在我的.pro文件中我添加了这些行:

LIBS    += -lssl
LIBS    += -lcrypto

所以在linux上它运行得很好。

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

我在我的程序文件夹中创建了一个名为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识别头文件(例如),编译时没有发生错误。

但是当我启动我的程序时,它不起作用并且不会出现错误。 所以我在我的主要功能开始时提出了一个突破点,然后我重新启动了该程序。之后,一个小窗口向我显示这个错误:

  

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

我使用Qt 5.4.0和Mingw 32bits

我不会失败,为什么它不起作用。你能帮我吗 ? 谢谢。

1 个答案:

答案 0 :(得分:0)

您的整个项目需要使用cygwin,或者不使用cygwin。由于我假设您使用Visual Studio编译器进行编译,因此您需要使用不依赖于cygwin的OpenSSL构建。例如,Shining Light Productions中的一个,即Windows的事实OpenSSL二进制提供程序。