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.

Unresolved symbols remain / Function declared implicitly - Compiler's Fault?

Hi,

Creating a project for DSK6713 in CCS 5.5 that includes interrupts, i receive some times as warning and some time as an error the following:

Function declared implicitly for the comm_intr procedure that is provided by Chassaing book.

I have included the CSL and the BSL files, the CSL and BSL lib files, and inserted in the project's workspace the following: C6713dsk.cmd, c6713dskinit.c, c6713dskinit.h, dsk6713_aic23.h, Vectors_intr.asm

Here is my code.

#include "dsk6713.h"
#include "dsk6713_aic23.h"
int mark= 0;



interrupt void c_int11()
{

// Perform some actions

        return;
}


void main ()
{
    comm_intr();
    while(1){
        ;
    }
    
}


I cann't understand , why it can't see the comm_intr procedure...

  • Hi,

    You are definitely missing a header file that contains the prototype of comm_intr(). Please check section 3.1 of the page below:

    processors.wiki.ti.com/.../Build_Errors_in_CCS

    Hope this helps,
    Rafael
  • Hi,
    First of all, I'd like to thank you for your help, but unfortunately it didn't work.
    The prototype of comm_intr() is in header file C6713dskinit.h that is inserted in the same folder with the .c c-file.
    Including only this file #include "C6713dskinit.h"
    I receive re-defined faults:
    Description Resource Path Location Type
    <a href="file:/C:/ti/ccsv5/tools/compiler/dmed/HTML/10234.html">#10234-D</a> unresolved symbols remain runinterrupt C/C++ Problem

    #10010 errors encountered during linking; "runinterrupt.out" not built runinterrupt C/C++ Problem
    unresolved symbol _fs, first referenced in ./c6713dskinit.obj runinterrupt C/C++ Problem

    #10056 symbol "_hAIC23_handle" redefined: first defined in "./main.obj"; redefined in "./c6713dskinit.obj" runinterrupt C/C++ Problem

    #10056 symbol "_AIC23CfgData" redefined: first defined in "./main.obj"; redefined in "./c6713dskinit.obj" runinterrupt C/C++ Problem

    #10056 symbol "_AIC_data" redefined: first defined in "./main.obj"; redefined in "./c6713dskinit.obj" runinterrupt C/C++ Problem

    #10056 symbol "_config" redefined: first defined in "./main.obj"; redefined in "./c6713dskinit.obj" runinterrupt C/C++ Problem

    all files.zip

  • Hi,

    I think it is compiler's fault.

    Including the following declaration:
    Uint32 fs=DSK6713_AIC23_FREQ_48KHZ;
    the program compiles as the error :

    Description Resource Path Location Type
    <a href="file:/C:/ti/ccsv5/tools/compiler/dmed/HTML/10234.html">#10234-D</a> unresolved symbols remain runinterrupt C/C++ Problem

    was solved!!!

    But the warning : Description Resource Path Location Type
    <a href="file:/C:/ti/ccsv5/tools/compiler/dmed/HTML/225.html">#225-D</a> function declared implicitly main.c /runinterrupt line 20 C/C++ Problem

    even if the function is declared and also it run !!!!
  • Hi,

    Thanks for sending the source code. I have the following comments:

    Giorgos Vasilas said:
    Including the following declaration:
    Uint32 fs=DSK6713_AIC23_FREQ_48KHZ;

    This is expected. The file <c6713dskinit.c> references the variable fs as external, thus requiring you to define it somewhere else in your code. Defining it in <main.c> as you did above solves this dependency.

    Giorgos Vasilas said:
    The prototype of comm_intr() is in header file C6713dskinit.h that is inserted in the same folder with the .c c-file.
    Including only this file #include "C6713dskinit.h"

    The source file <main.c> you sent me did not have the line #include "C6713dskinit.h". When I added it the "function declared implicitly" warning went away, although all the other errors started showing up (the duplicate symbols).

    I then noticed that you are not preventing your <c6713dskinit.h> file to be included more than once (thus causing the errors). To prevent that, insert the following in your file:

    c6713dskinit.h said:

    /*C6713dskinit.h Include file for C6713DSK.C */

    #ifndef _C6713DSKINIT_H
    #define _C6713DSKINIT_H

    (...)

    #endif 

    Hope this helps,

    Rafael

     

  • Hi,

    First of all I'd like to thank you for your interest!

    Anyway,

    I used the "including guard" in the file c6713dskinit.h but it does not prevented the the errors of double definitions .

    That's a little bit strange or I'm missing something!?

  • Hi,

    Sorry I missed your reply. The "include guard" is very useful for several situations, but it is not enough. You will have to define the conflicting variables in a single source file and reference them as "extern" on the header file.

    Details are shown here:
    e2e.ti.com/.../1634563

    I will also save the post above for my own reference; from time to time I run into a similar issue and can never remember the exact reason why it fails.

    Hope this helps,
    Rafael