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

Windows MSYS2下GCC编译如何指定DLL路径解决未定义引用错误

链接错误原因

MinGW GCC不会自动扫描库目录下的文件做隐式链接,你之前执行的g++ test_arb.cpp命令没有指定需要链接的依赖库,所以即使头文件能正常找到、库文件放在默认搜索路径下,链接器也不会主动加载这些库,就会抛出undefined reference错误。

正确编译命令

arb、flint、GMP、MPFR存在明确依赖关系:arb依赖flint,flint依赖GMP和MPFR,链接时需要按「上层依赖在前、底层依赖在后」的顺序指定链接库,你的环境下直接执行以下命令即可:

g++ test_arb.cpp -o test_arb.exe -larb2 -lflint -lmpfr -lgmp

参数说明:

  • -l后接的是库名缩写:MinGW GCC会自动匹配搜索路径下前缀为lib、后缀为.dll/.a的对应库文件,你的arb库文件名为libarb2.dll,所以对应参数写-larb2即可,其余库同理。
  • 你的头文件路径/mingw64/include、库路径/mingw64/lib本身就是MSYS2 MinGW GCC的默认搜索路径,正常情况下不需要额外指定。
特殊场景补全

如果执行上述命令仍然提示找不到库,可以显式加入头文件和库的搜索路径,完整命令如下:

g++ test_arb.cpp -o test_arb.exe \
-I/mingw64/include \
-L/mingw64/lib \
-larb2 -lflint -lmpfr -lgmp
  • -I参数用于额外指定头文件搜索目录
  • -L参数用于额外指定链接阶段的库文件搜索目录,仅在编译链接时生效,和程序运行时找DLL的逻辑无关
运行时DLL加载说明

编译生成exe后,如果运行时提示找不到对应DLL,通过以下两种方式解决即可:

  • 把/mingw64/lib路径下的libarb2.dll、libflint.dll、libgmp-*.dll、libmpfr-*.dll复制到和生成的exe同目录
  • 把/mingw64/lib路径加入Windows系统的PATH环境变量

注意:Windows系统加载运行时DLL不会读取编译时传入的-L路径,只会搜索exe所在目录、系统目录、PATH环境变量中列出的目录。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 03:01:25