【win10+编译gmp大数库】

2023-07-08 14:43:42 浏览数 (2)

另外一个头痛的问题就是mingw编译出来的静态库后缀名为.a,编译出来的动态库的导入库后缀名为.dll.a,而在Windows下一般使用.lib的来作为静态库或者动态库的导入库。好在VS中是能够识别.a文件作为导入库的,像加载.lib一样加载dll.a即可:

#pragma comment(lib, “libgmp.dll.a”) 1. 注意使用动态库时,单独运行时可能会提示缺少dll,libgmp.dll还依赖了mingw中的一些运行时库,根据提示找到相应的dll即可。

示例 在VS环境中设置好动态库环境,使用实例代码如下:

win10 编译gmp大数库(亲测可用)

代码语言:javascript复制
#include <iostream>

#include "gmp.h"
using namespace std;
int main()
{
    std::cout << "Hello World!n";
    
    //计算2的1000次方
    {
        size_t a = 1;
        for (int i = 0; i < 1000; i  )
        {
            a *= 2;
        }
        cout << "2^1000 = " << a << endl;
    }
    {
        mpz_t a, b, c, d;
        mpz_init(a);
        mpz_init(b);
        mpz_init(c);
        mpz_init(d);
        //计算2的1000次方
        mpz_init_set_ui(a, 2);
        mpz_pow_ui(c, a, 1000);
        gmp_printf("c = %Zdn", c);
    }

    //大数运算
    {
        mpz_t b, c, d;
        mpz_init(b);
        mpz_init(c);
        mpz_init(d);

        //计算12345678900987654321*98765432100123456789
        mpz_init_set_str(b, "12345678900987654321", 10);//10进制 
        mpz_init_set_str(c, "98765432100123456789", 10);
        mpz_mul(d, b, c);
        gmp_printf("d = %Zdn", d);

        mpz_clear(b);
        mpz_clear(c);
        mpz_clear(d);
    }

    return 0;
}

0 人点赞