OpenSSL libcrypto-1_1-x64.dll缺失

时间:2017-03-30 17:18:33

标签: c++ openssl g++ runtime-error system-error

我已经用C ++开始了一个项目,需要实现一些openssl库。我下载了这些库,按照如何安装openssl的说明进行操作。

由于多种原因,这是一次痛苦,不得不多次安装/重新安装。

我终于能够看似正确地安装openssl并编译库,用-libcrypto和-libssl链接它们,而不是我到处看到的-lcrypto和-lssl。

我已经完成了调试过程,我的包含很好,并且implimentation似乎工作,因为g ++找到错误文件并抛出编译错误,但当它“成功”编译并运行.exe我得到这个错误。

enter image description here

我搜索了我的openssl intall位置,我找到了该文件。

enter image description here

这是我的makefile代码,所有这些位置都明确在构建路径中

# *- Makefile -*

compiler=g++
standLib=-lstdc++ -llibcrypto -llibssl
include=-I C:\openssl-1.1.0e\include 
ExtLibrary=-L C:\openssl-1.1.0e        // <--- LOCATION OF THE .dll FILE
outfile=-o main.exe

all : main.o fileReader.o main

clean :
    del *.o *.exe

main: main.o fileReader.o numbers.o
    $(compiler) main.o $(standLib) $(include) $(ExtLibrary) $(outfile)

main.o : main.cpp fileReader.cpp
    $(compiler) -c main.cpp $(standLib) $(include) $(ExtLibrary) 

fileReader.o : fileReader.cpp fileReader.h
    $(compiler) -c fileReader.cpp $(standLib) 

numbers.o : numbers.cpp numbers.h
    $(compiler) -c numbers.cpp $(standlib) 

我缺少什么?感谢您的任何意见或帮助!

**更新**

我发现我可以执行我的程序,只要它在与libcrypto-1_1-x64.dll所在的openssl相同的目录中运行。

我如何构建我的程序,以便它可以独立运行它而无需在计算机上安装openssl? IE:如果我想把它交给一个没有在他的机器上安装openssl的朋友。

2 个答案:

答案 0 :(得分:0)

  1. 卸载并重新安装mosquitto
  2. 将libcrypto.dll和libssl.dll文件都复制到mosquitto目录中,然后重新安装mosquitto
  3. 在cmd提示符下运行mosquitto:

    cd C:\Program Files (x86)\mosquitto
    mosquitto

  4. 执行以下子命令:mosquitto_sub -h test.mosquitto.org -t "#" -v

  5. 您应该看到来自mosquitto.org测试服务器的消息

答案 1 :(得分:0)

要解决此问题,您只需将openssl的/bin目录添加到您的路径中(使用环境变量)。