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

在FreeSWITCH中新增C文件后重载模块出现函数引用错误

FreeSWITCH自定义核心函数调用报错:No reference to function

核心原因

编译阶段无报错但运行时找不到函数,本质是自定义模块未链接到包含新函数的FreeSWITCH核心库,或新代码未被正确编译进核心库。

排查修复步骤

  • 确认新文件已加入核心库编译列表
    检查src/Makefile.am,确保你的新.c文件被添加到libfreeswitch_la_SOURCES中,示例:

    libfreeswitch_la_SOURCES = switch_core_hash.c switch_core_session.c ... your_new_file.c
    

    修改后必须执行./bootstrap.sh && ./configure重新生成配置文件,不要直接编辑Makefile.in,避免配置不同步。

  • 确保模块链接核心库
    打开自定义模块目录下的Makefile.am(如src/modules/my_module/Makefile.am),确认mod_my_module_la_LIBADD包含核心库依赖:

    mod_my_module_la_LIBADD = $(top_builddir)/src/libfreeswitch.la
    

    此配置保证模块编译时会链接到包含新函数的核心库,否则仅靠头文件声明只会在编译阶段通过,运行时找不到实现。

  • 检查函数的对外可见性
    在头文件中声明函数时,必须使用FreeSWITCH的导出宏SWITCH_DECLARE或SWITCH_API,确保函数能被外部模块访问,示例:

    // your_new_file.h
    SWITCH_DECLARE(switch_status_t) my_custom_function(switch_core_session_t *session);
    

    未添加宏的函数默认是内部可见,模块无法调用。

  • 全量重新编译
    从FreeSWITCH根目录执行make clean && make && make install,彻底清理旧编译产物,确保核心库和模块都基于最新代码重新编译链接。

  • 正确重载模块
    在fs_cli中先执行unload mod_my_module,再执行load mod_my_module,避免重载时加载旧版本模块。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 07:02:09