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

编译PJSIP的siprtp后运行报错:未定义符号pj_ansi_strxcpy求助

解决PJSIP siprtp运行时undefined symbol: pj_ansi_strxcpy错误

出现这个运行时错误的核心原因是:编译阶段只完成了源码语法检查,但链接阶段没有把包含pj_ansi_strxcpy函数的目标文件或库纳入进来。这个函数属于PJSIP的pjlib组件,你可以通过以下两种方式解决:

方法1:链接pjlib预编译库

PJSIP编译完成后,pjlib会生成对应的库文件,直接在链接时引入即可:

  • 找到pjlib的库目录:~/pjsip/pjproject-2.13/pjlib/lib,里面有静态库libpj.a或动态库libpj.so
  • 修改你的Makefile:
    • 在CFLAGS中添加pjlib的头文件路径:CFLAGS += -I~/pjsip/pjproject-2.13/pjlib/include
    • 在LDFLAGS或LDLIBS中添加库链接参数:LDFLAGS += -L~/pjsip/pjproject-2.13/pjlib/lib -lpj
  • 重新执行make clean && make即可

方法2:直接编译string.c到目标程序

如果不想依赖预编译库,可以把string.c直接加入编译流程:

  • 修改Makefile中的源文件列表,把string.c的路径加进去,比如:
    SRCS = siprtp.c siprtp_report.c ~/pjsip/pjproject-2.13/pjlib/src/pj/string.c
    
  • 同样要确保CFLAGS包含pjlib的头文件路径:CFLAGS += -I~/pjsip/pjproject-2.13/pjlib/include
  • 重新编译即可

注意事项

  • 建议优先用方法1,因为PJSIP的pjlib还有其他可能被依赖的函数,直接链接整个库能避免后续出现类似的符号缺失问题
  • 如果用相对路径,要确保路径相对于Makefile的位置正确,用绝对路径更稳妥

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 22:52:46