编译构建CMAKE时没有遇到Openssl libeay32.dll问题

时间:2017-12-06 03:48:56

标签: visual-studio compilation cmake

您好我正在尝试使用github上的these instructions编译Windows程序。我已经安装了所需的依赖项(VS2017,cmake,cuda 8,amd app sdk 3.0)。

我已将所需的xmr-stak-dep.zip放入我的C:/文件夹和命令树中。确实符合所显示的内容。这些文件都可以访问。

  C:\xmr-stak-dep>tree .

  Folder PATH listing for volume Windows
  Volume serial number is XX02-XXXX
  C:\XMR-STAK-DEP
  ├───hwloc
  │   ├───include
  │   │   ├───hwloc
  │   │   │   └───autogen
  │   │   └───private
  │   │       └───autogen
  │   └───lib
  ├───libmicrohttpd
  │   ├───include
  │   └───lib
  └───openssl
      ├───bin
      ├───include
      │   └───openssl
      └───lib

问题是当程序最终通过运行以下命令构建时;当程序执行时,我收到错误libeay32.dll&找不到ssleay32.dll。下面的命令确实显示它确实将cmake设置为包含这些ddl文件的路径。

 "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\Tools\VsMSBuildCmd.bat" 

 set CMAKE_PREFIX_PATH=C:\xmr-stak-dep\hwloc;C:\xmr-stak-dep\libmicrohttpd;C:\xmr-stak-dep\openssl

 mkdir build

 cd build

我发现this帖子确实显示了如何解决这个问题,但我不确定如何使用我的配置命令这是我第一次编译Windows程序。

作为一个注释,我使用here的dev分支作为源。

1 个答案:

答案 0 :(得分:1)

您的编译没有任何问题。只是你的程序依赖于那些DLL。在尝试查找程序所依赖的DLL时,Windows仅在某些位置查找。

本文介绍了Windows如何查找DLL:https://docs.microsoft.com/en-us/cpp/build/search-path-used-by-windows-to-locate-a-dll

最简单的选项是将openssl .dll复制到.exe旁边的目录中,或者将包含它们的目录添加到路径中。后者可以通过set PATH=C:\XMR-STAK-DEP\openssl\lib;%PATH%临时完成(假设DLL位于openssl\lib其他替代openssl\bin