问题描述
最近写一个小工具,在使用gcc或g++命令编译链接时,总是报“undefined reference to xxx"的错误,确认了一边找不到的符号,在链接的一个动态库中是存在的,折腾了好久,找到了问题的原因,记录备忘,供大家参考。
解决方法
一般原因
一般出现“undefined reference to xxx”,是由于链接时,缺少xxx函数实现的目标文件(.o),或动态库、静态库,这种情况,只需要在链接的命令中加入xxx函数实现的目标文件、动态库或静态库就可以解决了。
C++调用C API
如果缺少的xxx函数是在一个.c源文件中实现,或者在一个导出标准C api的动态库中实现,在C++中调用这个函数时,需要在该函数申明的签名加上extern “C” 才能链接成功。这主要原因是C++与C语言的函数封装不同导致,这里就不再做深入讨论。
评论区