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

Android Studio中SDL2开发C应用自定义头文件引用出现未定义引用错误

解决SDL2 Android项目中自定义函数的Undefined Reference错误

这个错误不是编译阶段的头文件引用问题,而是链接阶段的问题——简单来说,编译器能通过头文件找到函数的声明(所以自动补全能正常工作),但链接器找不到这些函数的实现代码,因为你的graphics_mobile.c没有被加入到NDK的构建流程里。

具体解决步骤(分构建系统类型)

如果你用CMake构建(Android Studio默认推荐)

打开项目中的CMakeLists.txt文件,找到add_library的配置块,把graphics_mobile.c添加到源文件列表中:

add_library(
        # 你的库名称,比如native-lib
        native-lib
        SHARED
        # 已有的主源文件
        src/main/cpp/main_graphics.c
        # 加上你的自定义源文件
        src/main/cpp/graphics_mobile.c
)

保存后,执行Build -> Clean Project,再Build -> Rebuild Project,让构建系统重新生成链接规则。

如果你用Android.mk构建

打开Android.mk,修改LOCAL_SRC_FILES行,把graphics_mobile.c加入:

LOCAL_SRC_FILES := main_graphics.c graphics_mobile.c

同样清理并重新构建项目。

额外的检查和优化建议

  • 路径验证:确保CMake/Android.mk中填写的文件路径和实际文件在项目中的位置完全匹配,比如如果graphics_mobile.c在src/main/cpp/utils下,路径要写成src/main/cpp/utils/graphics_mobile.c。
  • 循环引用优化:注意到你的main_graphics.h和graphics_mobile.h互相包含,虽然#ifndef防护避免了重复定义,但长期来看建议把公共定义(比如POINT结构体、WIDTH/HEIGHT常量)抽成独立的头文件(比如common.h),然后两个头文件都引用这个公共头文件,这样能减少潜在的编译问题。
  • NDK版本不是问题:你测试的两个NDK版本都出现同样错误,说明问题不在NDK本身,完全是构建配置的遗漏。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 07:37:35