This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

AM625: rpmsg问题,我成功编译运行了rpmsg_char_simple,现在我希望将它运用到我们项目上,出现了找不到API的问题

Part Number: AM625

我在自己的项目中尝试加入rpmsg,下面是我的部分代码,我能够正确编译生成可执行文件。但是当我移植到开发板上运行时,出现报错,undefined symbol: rpmsg_char_open

        #include "ti_rpmsg_char.h"
        
        char eptdev_name[32] = { 0 };
        int remote_endpt = REMOTE_ENDPT;
        int local_endpt = RPMSG_ADDR_ANY;
        int rproc_id = 9;
        int flags = 0;
        char *dev_name = "devId";
        rpmsg_char_dev_t *rcdev;
        
        sprintf(eptdev_name, "devId-%d-%d", rproc_id , getpid());
        rcdev = rpmsg_char_open(rproc_id, dev_name, local_endpt, remote_endpt, eptdev_name, flags);
        mFdRpmsg = rcdev->fd;

说我没有定义rpmsg_char_open()函数,我在头文件中声明了该函数,并将他的实现函数rpmsg_char.c放到了该目录下,虽然编译不报错,但是执行时说没有该函数,我很困惑,该如何解决该问题,正确的使用该API函数

  • 看样子是符号未定义,通常应该是由于链接阶段找不到对应的函数实现引起

    检查一下编译命令吧,确认一下`rpmsg_char.c`是否被包含在了编译过程中

    再确认一下在链接时包含了正确的库文件,如果

    rpmsg_char_open
    函数是在某个库中实现的,需要在链接时指定这个库文件,以便正确地链接到你的可执行文件中。

    最后再确认一下你的头文件中正确声明了

    rpmsg_char_open
    函数,并且在使用该函数时包含了正确的头文件。检查检查头文件的路径是否正确吧