同态加密SEAL3.6.6获取windows/vs2019工程的方法及创建工程调用SEAL库

        最近在做同态加密seal库的使用,最新版本是3.6.6,在linux(centos7)编译通过,想做一套windows版(win10)的,记录一下实现的过程。

一、安装cmake

下载安装版的msi文件 3.20以上版本即可

 https://cmake.org/download/   安装时选择添加cmake至系统路径

二、安装vs2019

 在Installer中勾选C++以及CMake依赖项

三、下载seal源码:

https://github.com/microsoft/SEAL.git

笔者下载时,最高版本是3.6.6,所以下载了3.6.6

下载解压后,将主目录名称改为“SEAL”,(不知这步是否为必须)

四、编译

1、管理员权限打开cmd,并切换到主目录:

cd SEAL

2、编译seal库并安装

cmake -S . -B build
cmake --build build  (cmake --build build --config Release)
(因为默认install找的是release路径下的lib)
cmake --install build

此时,build目录下就会出现工程文件,用vs2019打开即可阅读源码和编译:

lib下就会生成lib文件:

3、编译例子程序:

cd native\examples
cmake -S . -B build
cmake --build build  (cmake --build build --config Release)
(默认Debug模式会报错。)

 seal库和例子程序的编译设置一定要匹配,比如release/debug、x86/x64

此时,在build文件夹下,就会出现例子程序的工程,可以用vs2019打开进行修改编译等:

 至此,windows下获取seal库工程文件完成。

五、创建自己的工程文件调用seal库实现同态加密

1、使用vs2019新建一个空白的应用程序,并选择release/x64模式

2、在项目--属性中添加seal库:

添加库目录:build/lib/release

 

3、添加头文件目录:native/src

 

 至此,工程设置完毕,可进行程序编写调用seal库了

六、遇到编译错误的解决方式:

1、sprintf等函数报错不安全

解决方法:右键工程名–>属性–>C/C++->预处理器–>预处理器定义,编辑右边输入框加入:

_CRT_SECURE_NO_WARNINGS

2、报  for_each_n 不是std的成员

问题原因:c++版本不是17,参见文章:

关于visual Studio中C++版本的问题 - holdbalance - 博客园 (cnblogs.com)

解决方法:右击项目->属性->C/C++->语言->C++ 语言标准 。 当设置为默认值(应该即为 IOS2014 C++ 14 标准)时,_MSVC_LANG值为 201402L,当其值设置为:IOS2017 C++ 17 标准时,_MSVC_LANG值为 201703L。修改配置后,程序恢复正常。

3、报没有正确结尾:改成不使用预编译头

4、报没有“gsl/span”

把SEAL\thirdparty\msgsl-src\include下的gsl目录拷贝到src下

5、报 config.h缺失,拷过来一个

大致会遇到这些错误吧。

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 10
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值