我已经在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
我不会失败,为什么它不起作用。你能帮我吗 ? 谢谢。
答案 0 :(得分:0)
您的整个项目需要使用cygwin,或者不使用cygwin。由于我假设您使用Visual Studio编译器进行编译,因此您需要使用不依赖于cygwin的OpenSSL构建。例如,Shining Light Productions中的一个,即Windows的事实OpenSSL二进制提供程序。