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

Windows下f90wrap安装失败:多定义错误求助

解决Windows 10+Python 2.7+MinGW下f90wrap安装的multiple_definition错误

我之前在Windows环境下用MinGW编译f90wrap给Python 2.7用的时候,遇到过一模一样的问题!这个错误的核心原因很明确:

Python 2.7的官方版本是用MSVC 9.0编译的,依赖MSVC的运行时库libmsvcr90.a;而你用的MinGW自带的libmingw32.a库中,包含了和MSVC运行时库重复的函数(比如atexit、_decode_pointer、_encode_pointer)。当链接扩展模块时,链接器遇到重复的符号定义,就会抛出这个报错。

下面是我亲测有效的解决方案:

方法1:临时设置环境变量快速解决

在Powershell中执行以下命令,先配置好链接器参数再安装f90wrap:

# 设置链接器选项,排除MinGW的冲突库,强制使用Python依赖的msvcr90
$env:LDFLAGS = "-Wl,--exclude-libs,libmingw32.a -Wl,--exclude-libs,libmingwex.a -Wl,--exclude-libs,libmsvcrt.a -lmsvcr90"
# 切换到你下载的f90wrap源码目录
cd path\to\your\f90wrap-source-folder
# 执行安装
python setup.py install

方法2:修改f90wrap的setup.py永久生效

如果方法1没有解决问题,可以直接修改源码的编译配置:

  1. 打开f90wrap源码根目录下的setup.py文件
  2. 找到定义ext_modules的代码段(文件中后段,包含多个Extension对象的列表)
  3. 给每个Extension对象添加extra_link_args参数,示例如下:
    ext_modules = [
        Extension(
            'f90wrap.arraydata',
            sources=['f90wrap/arraydatamodule.f90'],
            extra_link_args=['-Wl,--exclude-libs,libmingw32.a', 
                            '-Wl,--exclude-libs,libmingwex.a',
                            '-Wl,--exclude-libs,libmsvcrt.a',
                            '-lmsvcr90']
        ),
        # 其他Extension对象也需要添加完全相同的extra_link_args
    ]
    
  4. 保存修改后,删除源码目录下的build文件夹(清理旧编译缓存),再运行python setup.py install

额外注意事项

  • 确保你的MinGW和Python都是64位版本(你已经确认过,这点没问题)
  • 如果遇到f2py相关的编译问题,可以提前设置环境变量指定编译器:
    $env:FC = 'gfortran'
    $env:CC = 'gcc'
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:45:10