Windows下PBC库的安装和vs2019中的测试

Windows下PBC库的安装和vs2019中的测试搜索了很多win下面配置PBCLibrary的经验贴后,终于配置成功了,接下来把自己遇到的一些问题记录一下

搜索了很多win下面配置PBC Library的经验贴后,终于配置成功了,接下来把自己遇到的一些问题记录一下。

先给出主要参考的文章的连接:

(6条消息) Windows 下PBC库的安装和配置_zmrlinux的博客-CSDN博客_pbc库安装 

(7条消息) VS2015配置PBC库_YorkSuen的博客-CSDN博客

附上需要用到文件的整合:http://pan.baidu.com/s/1hsMFT44 密码:j5fl 

配置的过程: 

1.创建一个vs2019的c++项目

Windows下PBC库的安装和vs2019中的测试

 2.配置附加包含目录。将上述连接的文件解压好,该文件已经将gmp.h和include目录中的.c文件整合好放在include文件夹下面了,可以直接使用。(方便include,我的头文件是在项目文件夹下的include目录中,gmp.h也要放进去。)

 Windows下PBC库的安装和vs2019中的测试

 

 3.配置pbc.lib的目录

Windows下PBC库的安装和vs2019中的测试 

 4.添加pbc.lib

 Windows下PBC库的安装和vs2019中的测试

 

 5.配置测试参数

 Windows下PBC库的安装和vs2019中的测试

同时最好把a.param参数对应的文件拷贝到该方案的文件下。为了防止运行时找不到参数,最好将这个a.param在项目文件夹和项目的Debug文件夹下都放一个。

6.更改include文件中的参数

提示:上面给出的文件中的两个文件已经是更改好的,无需再次更改

 先给上连接:c++ – Running PBC in Windows – Visual Studio – Stack Overflow

1)需要把pbc_utils.h文件中的对应代码更改一下

FROM

/*@manual log
Reports error message and exits with code 128.
*/
void pbc_die(const char *err, ...)
    __attribute__((__noreturn__))
    __attribute__((format (printf, 1, 2)));

/*@manual log
Reports informational message.
*/
void pbc_info(const char *err, ...)
    __attribute__((format (printf, 1, 2)));

/*@manual log
Reports warning message.
*/
void pbc_warn(const char *err, ...)
    __attribute__((format (printf, 1, 2)));

/*@manual log
Reports error message.
*/
void pbc_error(const char *err, ...)
    __attribute__((format (printf, 1, 2)));

TO

/*@manual log
Reports error message and exits with code 128.
*/
#ifdef _MSC_VER

__declspec(noreturn) void pbc_die(const char *err, ...);

#else

void pbc_die(const char *err, ...)
__attribute__((__noreturn__))
__attribute__((format(printf, 1, 2)));

#endif

/*@manual log
Reports informational message.
*/
#ifdef _MSC_VER

void pbc_info(const char *err, ...);

#else

void pbc_info(const char *err, ...)
__attribute__((format(printf, 1, 2)));

#endif

/*@manual log
Reports warning message.
*/
#ifdef _MSC_VER

void pbc_warn(const char *err, ...);

#else

void pbc_warn(const char *err, ...)
__attribute__((format(printf, 1, 2)));

#endif

/*@manual log
Reports error message.
*/
#ifdef _MSC_VER

void pbc_error(const char *err, ...);

#else

void pbc_error(const char *err, ...)
__attribute__((format(printf, 1, 2)));

#endif

(the reason is that the __attribute__ is GCC-specific, thus inexistent in VS.)

2)需要把 pbc_curve.h文件中的对应代码更改一下

FROM

#pragma GCC visibility push(hidden)
// Internal:

element_ptr curve_x_coord(element_t e);
element_ptr curve_y_coord(element_t e);
element_ptr curve_a_coeff(element_t e);
element_ptr curve_b_coeff(element_t e);
element_ptr curve_field_a_coeff(field_t f);
element_ptr curve_field_b_coeff(field_t f);

void curve_from_x(element_ptr e, element_t x);
void curve_set_si(element_t R, long int x, long int y);
void curve_set_gen_no_cofac(element_ptr a);

#pragma GCC visibility pop

TO

// Internal:

element_ptr curve_x_coord(element_t e);
element_ptr curve_y_coord(element_t e);
element_ptr curve_a_coeff(element_t e);
element_ptr curve_b_coeff(element_t e);
element_ptr curve_field_a_coeff(field_t f);
element_ptr curve_field_b_coeff(field_t f);

void curve_from_x(element_ptr e, element_t x);
void curve_set_si(element_t R, long int x, long int y);
void curve_set_gen_no_cofac(element_ptr a);

(the reason is that the #pragma GCC directive DOES NOT exist in VS.)

7.可能会出现的错误和解决办法

会出现fopen报错。

解决方法,添加_CRT_SECURE_NO_WARNINGS:

Windows下PBC库的安装和vs2019中的测试

 

会出现无法打开stdafx.h文件。

解决方法,将“include “stdafx.h”头文件注释掉

 

会出现无法启动此程序,计算机中丢失pbc.dll

解决办法,选择当前工程,右击”属性” -> “配置属性” -> “调试”,在”工作目录”设置dll的路径,将pbc.dll文件所在的目录添加进去。

Windows下PBC库的安装和vs2019中的测试 

 还可能出现如下错误

Windows下PBC库的安装和vs2019中的测试

 解决方案,将element_from_hash(H, “Message”, 7);和element_from_hash(H, “Message”, 7);两行代码注释掉。具体原因不是很清楚,希望有dalao指点一下。

 

 编译结果:

 Windows下PBC库的安装和vs2019中的测试

 

今天的文章Windows下PBC库的安装和vs2019中的测试分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/60936.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注