You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C语言程序中打印libpari库的版本号

根因说明

所有libpari的函数调用都依赖预先初始化的PARI内存栈和内部状态,未初始化就调用pari_version()会直接触发内存访问违例。

正确实现代码

#include <gmp.h>
#include <mpfr.h>
#include <mpc.h>
#include <pari/pari.h> 
int main(void){  
  // 初始化PARI库,第一个参数为初始分配的栈大小,普通场景填1000000即可
  pari_init(1000000, 0);

  gmp_printf ("MPFR library: %-12s\nMPFR header:  %s (based on %d.%d.%d)\n",
          mpfr_get_version (), MPFR_VERSION_STRING, MPFR_VERSION_MAJOR,
          MPFR_VERSION_MINOR, MPFR_VERSION_PATCHLEVEL);
  
  gmp_printf (" GMP-%s \n ", gmp_version );
  
  mpfr_printf(" MPC-%s \nMPFR-%s \n GMP-%s \n", MPC_VERSION_STRING, mpfr_version, gmp_version );
  
  // 运行时获取动态链接的libpari版本
  gmp_printf("pari_version = %s\n", GENtostr(pari_version()));
  // 也可直接使用编译时版本宏,不需要调用运行时接口
  gmp_printf("pari compile version = %s\n", PARI_VERSION_STRING);

  // 释放PARI库占用的资源
  pari_close();
  return 0;
}

编译运行说明

编译命令和原有逻辑保持一致即可:

gcc g.c -lpari -lmpc -lmpfr -lgmp -Wall

运行后不会再出现内存保护违例报错,可正常输出所有依赖库的版本信息。

内容的提问来源于stack exchange,提问作者Adam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 11:45:03