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.

DSPLIB linking problem DSPF_sp_fftSPxSP unresolved symbols

I have a problem similar to http://e2e.ti.com/support/embedded/linux/f/354/t/148636.aspx but it seems to be a different cause.

I am porting code from another platform (Intel, using IPP), and have just started adding the DSPLIB equivalents with DSPF_sp_fftSPxSP

When I build, I get an unresolved symbol, I am building for Little-endian ELF format and have linked the .ae66 library.

Unlike the link above, the library is included after the code which calls it, I can't see what the problem might be.  I have confirmed with nm6x.exe that the linked file includes the function:

00006a8 t $C$L8
00000000 t .text
00000000 t .text:optimized
00000000 T DSPF_sp_fftSPxSP
00000000 a DSPF_sp_fftSPxSP.asm
00000000 u
000000e0 t $C$L3

I have included both the lib directory and the specific .ae66 file while trying to track down the problem. This is the output (long list of files trimmed, replaced by [...] ):

'Building target: benchmark.out'
'Invoking: C6000 Linker'
"C:/ti/ccsv5/tools/compiler/c6000_7.4.11/bin/cl6x" -mv6600 --abi=eabi -g --gcc --display_error_number --diag_warning=225 --diag_wrap=off -z -m"benchmark.map" -i"C:/ti/ccsv5/tools/compiler/c6000_7.4.11/lib" -i"C:/ti/dsplib_c66x_3_1_0_0/lib" -i"C:/ti/ccsv5/tools/compiler/c6000_7.4.11/include" --reread_libs --warn_sections --display_error_number --diag_wrap=off --rom_model -o "benchmark.out" -l"./configPkg/linker.cmd" [...] "./signal/signal_code.obj" [...] -l"C:\ti\dsplib_c66x_3_1_0_0\lib\dsplib.ae66" -l"libc.a"
<Linking>
warning #10247-D: creating output section ".TI.tls" without a SECTIONS specification
warning #10247-D: creating output section ".TI.tls_init" without a SECTIONS specification

 undefined                                                                        first referenced        
  symbol                                                                              in file             
 ---------                                                                        ----------------        
 DSPF_sp_fftSPxSP(int, float *, float *, float *, unsigned char *, int, int, int) ./signal/signal_code.obj

error #10234-D: unresolved symbols remain

>> Compilation failure
error #10010: errors encountered during linking; "benchmark.out" not built
gmake: *** [benchmark.out] Error 1
gmake: Target `all' not remade because of errors.

**** Build Finished ****

Can anyone suggest how to fix this?

  • Welcome to the TI E2E forum. I hope you will find many good answers here and in the TI.com documents and in the TI Wiki Pages (for processor issues). Be sure to search those for helpful information and to browse for the questions others may have asked on similar topics (e2e.ti.com). We will get back to you shortly. Thank you.
  • I think I've found the problem, it appears to be the C++ name mangling issue mentioned at http://e2e.ti.com/support/embedded/linux/f/354/t/148029.aspx

    I have added
    #ifdef __cplusplus
    extern "C" {
    #endif

    to the header file and it now appears to have moved on to the next set of errors :-)

    I hope that helps someone else.

  • Hi Relingor,
    We are happy and glad that the e2e search solved the issue. Thank you for the update.
  • Hello Relingor,

    Thanks for your information. Definitely it would help others.

    Regards,

    Senthil