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.

调用静态库编译报错



大家好!

ccs5.3 & c6678

我创建了一个工程oem,生成一个静态库oem.lib。

然后创建了另一个测试工程User,调用oem.lib。编译报错如下:

这些unresolved symbols的都是在oem工程中的,测试工程很简单,只是调用了oem中的一个简单函数,而且此函数还不包含这些unresolved symbols,而存在于其他部分。

我觉得我已经将需要的头文件都加到测试工程里了,但是还是报错。不清楚是什么问题。

请问该如何解决?

谢谢!

  • 有在测试工程中include oem.lib么,可能是你lib中代码include的有问题,如果直接将源码放到lib中编译在link的时候应该也有类似的问题。

  • 谢谢Andy!

    我把oem.lib以及用到的头文件都放在测试工程的目录下,并且在property中加了路径。

    你说“可能是你lib中代码include的有问题,如果直接将源码放到lib中编译在link的时候应该也有类似的问题。

    请问,直接将源码放到lib中编译是什么意思,什么源码?

    我的lib工程oem中include应该没问题吧,oem工程可以编译出oem.lib,没有报错啊。报错的是测试工程。

    谢谢解答。

  • 我是说把你生成lib的c源码直接放到测试工程中,不要使用lib,这样编译试试,我觉得会复现问题,这样就比较好查

  • 谢谢Andy!

    依旧报相同的错误。如下

    我之前写过两个小的ccs工程,试了一下lib的调用,没有问题。

    但是现在这两个工程都是rtsc工程,就出现了这样的问题,请问,是否在platform和cfg的配置上有什么要求么,比如要求测试工程和lib工程有相同的platform或什么的?

    请求解答,谢谢!

  • 这些错误提示是缺乏相应的函数定义,可以在工程中将相应的QMSS/CPPI 源文件加入编译,或者在工程中加入cppi/QMSS lib:pdk_C6670_1_1_2_6\packages\ti\drv\qmss\lib

    或者在cfg中按照如下方式添加cppi/QMSS lib:

    /* Load and use the CPPI and QMSS packages */
    var Cppi = xdc.loadPackage('ti.drv.cppi');
    var Qmss = xdc.loadPackage('ti.drv.qmss');