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

在Windows 64位DLL中使用new运算符导致加载失败问题求助

问题分析与解决

核心原因

你遇到的问题是MinGW64编译64位C++ DLL时,new运算符依赖的64位C++标准库动态链接文件未被系统找到。

MinGW64默认会动态链接libstdc++-6.dll、libgcc_s_seh-1.dll这类标准库文件,而你的运行环境中要么没有这些64位库,要么库的路径未被系统识别,导致DLL加载时无法找到依赖,最终返回空指针或提示找不到模块。32位版本正常是因为系统中可能已存在对应的32位标准库,或者编译时默认的链接策略不同。

解决方法

1. 静态链接C++标准库(推荐)

编译时强制将C++标准库静态打包进DLL,彻底消除外部依赖。在CodeBlocks中设置:

  • 打开项目属性 → 编译器设置 → 其他选项
  • 添加编译参数:-static-libstdc++ -static-libgcc
    重新编译DLL后,加载时就不需要依赖外部的标准库文件了。

2. 配置系统PATH环境变量

如果需要保持动态链接,将MinGW64的bin目录(例如C:\mingw64\bin)添加到系统的PATH环境变量中,确保系统能找到64位的标准库文件。

3. 确认编译器配置正确性

检查CodeBlocks的编译器是否指向MinGW64目录,避免误使用32位MinGW的编译工具链:

  • 打开Settings → Compiler → Toolchain executables
  • 确认所有工具(gcc、g++等)的路径都是MinGW64下的bin目录中的64位版本

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 19:22:07