《NTL库》使用教程(C++ 现代密码学)
《NTL库》使用教程(C++ 现代密码学)
2024年暑假,第一次使用NTL。
作为中文母语者,习惯性地搜索网络上的中文教程,但发现教程已经很脱离时代了。
在自己盲目探索过后,总结如下,希望对后续学者有所帮助!
下面使用 Visual Studio 2022 进行介绍。
2024-07-21@Seymour
[TOC]
一、官网下载开源代码

-
点击
Windows: WinNTL-11_5_1.zip
下载得到安装包。 -
放在自己的一个合适位置,解压。

二、编译生成静态库
-
打开Visual Studio 2022 新建空项目。
自行选择项目名称、文件夹位置(可任意位置,这里项目只是用来生成静态库lib的,后续甚至可以丢弃)。
我的命名是
NTL_lib

- 添加现有项

-
找到NTL的src目录,全选,添加。
F:\Data\TEST\WinNTL-11_5_1\src

- 右键项目 NTL_lib,点击属性,打开。

-
更改“配置类型”为“静态库(.lib)”。
注意:配置的模式要一致,我这里是Debug。若是Release,操作一样,每次注意模式一致的。

-
SDL检查 改为 否。
(否则会因为编译太严格而报错)
warning C4146: 一元负运算符应用于无符号类型,结果仍为无符号类型

- 记得点击“应用”-“确定”,然后就可以退出属性页。
- 然后点击“开始执行”。

-
最终,生成成功!就可以在对应的生成目录下看到有下面3个文件。
生成完成后可能会有报错说不存在可执行文件,不用管,只需要看到生成下面三个文件即可。
(注:如果是Release模式,则是生成2个文件。)

如若您,已经捣鼓了半天,还是没能生成
NTL_lib.lib
。下面是我生成的
lib
,您可以直接使用:环境:Windows 64位(其他电脑环境无法使用我生成的lib)
三、开始自己的项目
-
新建自己的项目。
我的是 MyProject

-
新项目创建好。右键“源程序”,添加,新建项。
如添加一个
main.cpp
,写入以下的示例程序。
1 |
|
这时,应该还是不能使用,会显示如下:

- 又回到NTL的源代码,找到
include
文件夹,整个复制过来。

- 复制放到自己的新项目的资源文件下。
- 还有刚刚生成的
.lib
的3个文件也复制过来。 - 如下图:

- 打开MyProject项目的属性:
- 打开C/C++的常规。
- 附件包含目录,添加刚刚复制过来的
include
文件夹。 - SDL检查改为否。

- 好的,现在应该不会标红了。

-
但是,还不能执行,继续后面的工作。
-
右键源文件,添加,现有项。

- 选择刚刚复制来的
NTL_lib.lib
文件,添加。

- 至此,所有准备工作都完成了。
- 点击“开始执行”。

- 至此,所有的工作都做好了。
- 此后,可以在这个MyProject项目下添加任何新的cpp文件,都可以直接使用NTL库了。
这里提一下:
我们前面操作都是以配置Debug模式为例的,若希望是Release模式,则前面生成静态库也应该是Release模式。
注:尤其注意,Visual Studio比较坑,这两个的设置是单独的,而且可以交错修改,所以说,每次自己配置时,注意看一下是什么模式。同时,也要看,自己“开始执行”又是什么模式!!!