另外一个头痛的问题就是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;
}