# 修复 SDL2_image 链接错误计划 ## 问题描述 链接时出现大量 undefined reference 错误,主要是关于 libjpeg 的函数: - `jpeg_calc_output_dimensions` - `jpeg_CreateDecompress` - `jpeg_destroy_decompress` - `jpeg_finish_decompress` 等等 ## 问题原因 SDL2_image 依赖多个第三方库来支持不同的图片格式: - libjpeg - JPEG 格式支持 - libpng - PNG 格式支持 - libtiff - TIFF 格式支持 - libwebp - WebP 格式支持 等等 需要在 switch.lua 中添加这些依赖库的链接。 ## 修复方案 ### 修改 platform/switch.lua 在 `add_syslinks` 中添加 SDL2_image 所需的依赖库。 根据 devkitPro/portlibs 的通常配置,需要添加: - libpng - libjpeg - zlib (libpng 依赖) - 可能还需要其他库 ## 具体修复代码 修改 `platform/switch.lua` 中的 `add_syslinks` 部分: ```lua -- 修改前 add_syslinks("SDL2_mixer", "SDL2_image", "SDL2", "opusfile", "opus", "vorbisidec", "ogg", "modplug", "mpg123", "FLAC", "GLESv2", "EGL", "glapi", "drm_nouveau", {public = true}) -- 修改后 add_syslinks("SDL2_mixer", "SDL2_image", "SDL2", "png", "jpeg", "z", -- SDL2_image 依赖 "opusfile", "opus", "vorbisidec", "ogg", "modplug", "mpg123", "FLAC", "GLESv2", "EGL", "glapi", "drm_nouveau", {public = true}) ``` ## 库的顺序说明 链接顺序很重要,被依赖的库要放在后面: - SDL2_image 依赖 png、jpeg、z - png 依赖 z - 所以顺序是: SDL2_image → png → jpeg → z ## 备选方案 如果上面的库还不够,可以尝试添加更多库: - `tiff` - TIFF 支持 - `webp` - WebP 支持 - `lzma` - 某些图片格式可能需要 ## 测试步骤 1. 应用修复 2. 清理缓存 3. 重新编译 4. 验证链接成功