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

Flutter Windows调试模式加载abc.dll失败(错误码193)求助

问题分析与解决方案

是的,你的猜测完全正确,调试版abc.dll依赖预编译的Release版FFmpeg DLL正是导致错误193的原因。

错误原因解析

Windows系统的错误码193(ERROR_BAD_EXE_FORMAT)通常发生在二进制格式不兼容的场景下,这里的核心问题是Debug与Release版本的C/C++运行时库不兼容:

  • Debug版本的abc.dll编译时会链接调试版运行时库(例如MSVC的msvcrtd.dll),这类库包含调试符号、内存检测等专属逻辑;
  • 你当前使用的avutil-57.dll、avformat-59.dll是Release版,它们链接的是发布版运行时库(例如MSVC的msvcrt.dll),两者的二进制结构、符号约定存在差异。

当系统加载Debug版abc.dll时,无法协调这种混合依赖的运行时库,最终抛出加载失败的错误。

修复方案

  1. 获取/编译FFmpeg的Debug版本库
    你需要对应Debug模式的avutil-57d.dll、avformat-59d.dll(通常Debug版库会带d后缀,具体以FFmpeg编译配置为准),确保依赖库与abc.dll的构建模式一致。

  2. 修改CMake配置区分依赖版本
    通过CMake的配置条件判断,让Debug模式链接Debug版FFmpeg库,Release模式链接Release版:

    add_library(
        abc
        SHARED 
        mycode.cpp
    )
    
    target_link_libraries(abc
        $<$<CONFIG:Debug>:avutil-57d>
        $<$<CONFIG:Debug>:avformat-59d>
        $<$<CONFIG:Release>:avutil-57>
        $<$<CONFIG:Release>:avformat-59>
    )
    
  3. 同步Debug目录的依赖DLL
    在Flutter调试构建时,确保将Debug版的FFmpeg DLL复制到项目的Debug输出目录中,替换现有的Release版DLL,保证所有依赖库的构建模式统一。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 14:10:36