您好我正在尝试使用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分支作为源。
答案 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
)