我非常感谢帮助HElib使用MSVC 2017编译器在Windows 10 x64上运行的帮助。我遵循NTL,使用相同的编译器成功地编译了它的依赖项this tutorial ,并运行了它的测试,所以它似乎运行良好。
但是,对于HElib,我尝试使用 cmake 生成Visual Studio项目,然后成功对其进行编译(请参见下面的注意),但是运行失败。例如,我运行了Test_binaryCompare.cpp_exe
测试(由cmake生成了它自己的vcproj
),但是它失败了,因为它到达了我怀疑应该执行的一部分代码(它尝试执行称为< em> bootstrapping ,并且该测试已被禁用)。但是,在Linux上可以使用。
LINUX: 我之所以很想在Windows上运行它,是因为我发现使用Visual Studio调试起来要容易得多。我也更习惯于Windows。
注意::成功编译HElib需要进行一些修改,例如修复损坏的tr1
包含(例如,它试图包含<tr1/memory>
而不是仅包含memory
,尽管后者是实际可用的),从而抑制了4146错误(我也必须对NTL执行此操作)并修复了两个可变长度数组实例,而这些都是Microsoft编译器不支持的。
答案 0 :(得分:1)
没有任何错误消息,我无法真正帮助您解决确切的问题,但前一段时间我将HElib移植到Windows:https://github.com/AlexanderViand/HElib/tree/Windows
有点过时了,但是如果测试在该版本中有效,您可以根据所做的更改检查我所做的更改。
还有一个选项可以让您简单地遇到此问题:https://github.com/shaih/HElib/issues/228
如果您的Linux版本的NTL稍旧,则可能是您的Windows版本的NTL是越野车。
最后,我强烈建议您不要在Windows上运行HElib,因为如果没有GMP,它似乎会非常缓慢。
相反,我最终设置了一个docker虚拟机,并通过Visual Studio通过SSH登录到该虚拟机:https://hub.docker.com/r/alexanderviand/visual-studio-linux-build-box-with-helib/
当我在Windows上使用HElib时,目前正在使用WSL和CLion(它们对WSL的支持很好)。