找不到符号 can not find symbol:xxx 分析之三(库函数未实现)

找不到符号 can not find symbol:xxx 分析之三(库函数未实现)

找不到符号 can not find symbol:xxx 分析之三(库函数未实现)

Q:在应用程序中调用了一个第三方的库,编译后没有任何 warning 调用第三方库的函数示例代码如 程序清单 1.1所示。

程序清单 1.1  示例代码
#include <stdio.h>
void clientShare(void);
int main (int argc, char **argv)
{
    clientShare();
    printf("Hello SylixOS!\n");

    return  (0);
}
库函数程序 1.2 示例代码
#include <stdio.h>
/*
void clientShare (void)
{
    printf("lib_func call!\n");
}
*/
有代码可见:库函数虽然有,但是并未实现。

将第三方库编译后部署至 lib 下,运行结果如图1.3所示。
本地存在程序中引用的功能库,但执行程序的时候依然会调不到库的符号

                                                                     图1.3 运行结果

1、问题分析:
虽然主函数调用了库函数的接口,但是并未实现库的功能。
与找不到符号 can not find symbol:xxx 分析之一(误操作输入错误的函数名称)中的原因类似。

2、实例验证
将注释掉的部分代码打开,重新编译库成功后右键应用库程序 Properties 设置:
添加链接设置 Linker Setting,点击 “是” 路径会在 Library Path 自动添。

重新编译应用程序:将程序重新部署后。再次运行发现即可调用函数库中的一段程序(或函数)


    • Related Articles

    • 找不到符号 can not find symbol:xxx 定位分析

      Q:编译应用程序后运行报错 can not find symbol:xxx 是什么问题? 如下示例,运行程序后报错:can not find symbol:_ZN11checkThread3runEv 分析 can not find symbol:xxx 的原因大致分为三种情况: 1、参考文章:找不到符号 can not find symbol:xxx 分析之一(误操作输入错误函数名称) 2、参考文章:找不到符号 can not find symbol:xxx 分析之二(库路径未添加或库未上传) ...
    • 找不到符号 can not find symbol:xxx 分析之二(库路径未添加或库未上传)

      找不到符号 can not find symbol:xxx 分析之二(库路径未添加或库未上传) Q:使用 RealEvo-IDE(以下简称IDE)开发程序时,在应用程序中调用了一个第三方的库,编译后没有任何 warning 调用第三方库的函数示例代码如 程序清单 1.1所示。 程序清单 1.1 示例代码 #include <stdio.h> void clientShare(void); int main (int argc, char **argv) { clientShare(); ...
    • 找不到符号 can not find symbol:xxx 分析之一(误操作输入错误函数名称)

      找不到符号 can not find symbol:xxx 分析之一(误操作输入错误函数名称) Q:使用RealEvo-IDE(以下简称IDE)开发程序时,误操作输入错误的函数名称时,编译器不会报错,输入错误的函数名示例代码如程序清单 1.1所示。 程序清单 1.1 示例代码 #include <stdio.h> int main (int argc, char **argv) { print("Hello World!\n"); return (0); } 控制台输出编译结果如 图 ...
    • can not find symbol:xxx(C++)

      Q:CPP 程序调用 C 函数编译无问题,运行找不到符号? c++ 中支持函数重载,所以 c 和 c++ 中对同一个函数经过编译后生成的函数名不同,这就会导致一个问题。如果在 c++ 中调用一个使用 c 语言编写模块中的某个函数,c++ 是按照 c++ 的名称修饰方式来查找并链接这个函数,就会发生链接错误。 c函数:void func(),被编译成函数:func c++函数: void func(){},被编译成函数:_Z4funcv 解决方法: 方法一: 可以在c++test.cpp文件中添加 ...
    • can not find symbol:xxx

      问:can not find symbol:xxx 在不使用第三方库时使用 Posix 接口进行线程创建,即调用 posix_create 函数时,程序在系统下运行时显示如 图1 错误,提醒无法找到以上函数的符号。 图 1.报错信息 在初始化函数 API_ThreadInit 中的 _TCBBuild 构建 TCP 属性块函数中有对钩子函数的使用。图2 图 2.报错函数位置 通过源码追踪,发现 Hook 函数并没有进行函数底层实现,且没有编译到 Base 工程的 symbol.ld ...