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.

Linux/TDA2: some question about add some code in origin sample code

Part Number: TDA2

Tool/software: Linux

Hi,

i want to add some code with own head & c file.

I include head file in origin code and add the file path in the NAKEFILE.MK, then make them

i got  "undefined reference to 'function_name' ".

Should i need modify other files to make sure compiler link correctly?

thanks,

Chen-Wei

  • Hi Chen-Wei ,

    Which location are you adding .

    Have you verified if the file is compiling after addition in the make file .
    Share more details so that we can help you better.

    Regards
    Chetan.M
  • Hi Chetan,

    My sample code is opencvcanny.

    Put my own code (head file and source code)in the folder of canny and add the path to MAKEFILE.MK after include just like

    "

    INCLUDE+= -I$(ipc_PATH)/hlos_common/include -I$(ipc_PATH)/packages -I$(kernel_PATH)/include/generated/uapi $(OSA_INC) -I$(ipc_PATH)/linux/include -I$($(MAKEAPPNAME)_PATH) -I$(OPENCV_INCLUDE) -I$(vision_sdk_PATH)/apps/src/hlos/adas/src/alg_plugins/opencvcanny/include

    i checked my code is compiled after addition in the make file, but can't link to my function.

    Thanks,

    Chen-Wei

  • Hi Chen-Wei,
    All OPENCV_LIBS are linked in "common_footer_a15.mk" file under vision_sdk\build\hlos\makerules\linux folder

    Regards
    Surya
  • Hi, Surya

    Thanks for told me OPENCV_LIBS are linked in where, but in my situation is i want add some own function in the sample code of canny.

    It means that we want do some modify in the sample code(call other sub function in a  new head file, which is created by me).

    which files should i need to modify to avoid the error i meet ?


    thanks,

    Chen-Wei

  • Chen Wei ,

    Do you mean canny algorithm .. ?
    Or canny alg plugin.

    can you please send the entire error

    Regards
    Chetan.M
  • Hi Chetan,
    i want to add some code to the origin code in canny usecase,

    origin                                                                                                       modify
    #include "iCanny.h"                                                                                 #include "iCanny.h"
    #include "opencv2/imgproc.hpp"                                                            #include "opencv2/imgproc.hpp"
                                                                                                                   #include "/tda/vision_sdk/apps/src/hlos/adas/src/alg_plugins
                                                                                                                                  /opencvcanny/include/hllow_world.h"

    void iCanny(IplImage *inputImage, IplImage *outputImage)                void iCanny(IplImage *inputImage, IplImage *outputImage)
    {                                                                                                             {
    UInt32 lowThresh;                                                                                    UInt32 lowThresh;
    UInt32 highThresh;                                                                                   UInt32 highThresh;

    cv::Mat inputMat = cv::cvarrToMat(inputImage, false);                             cv::Mat inputMat = cv::cvarrToMat(inputImage, false);
    cv::Mat outputMat = cv::cvarrToMat(outputImage, false);                        cv::Mat outputMat = cv::cvarrToMat(outputImage, false);

    lowThresh = 30;                                                                                       lowThresh = 30;
    highThresh = lowThresh * 3;                                                                    highThresh = lowThresh * 3;

    cv::Canny(inputMat, outputMat, lowThresh, highThresh, 3);                cv::Canny(inputMat, outputMat, lowThresh, highThresh, 3);        
                                                                                                                  hw();
    }                                                                                                              }

    and entire error is :
    /tda/vision_sdk/binaries/apps/tda2xx_evm_linux_opencx/lib/tda2xx-evm/a15_0/release/apps.a(canny.o): In function `iCanny':
    canny.cpp:(.text+0x5e): undefined reference to `hw()'

    Thanks,
    Chen-Wei

  • Hi ,

    Where is the function hw()

    Regards
    Chetan.M
  • Hi Chetan,

    the function hw() is in /tda/vision_sdk/apps/src/hlos/adas/src/alg_plugins/opencvcanny/include/hllow_world.h
    and i also add " /tda/vision_sdk/apps/src/hlos/adas/src/alg_plugins/opencvcanny/include/" in MAKEFILE.MK

    thanks,
    Chen-Wei
  • where is it implemented .?

    Its present in which .a lib .

    Regards
    Chetan.M
  • Hi Chetan,

    this is created by myself.

    Should i need to build them as a .a or .lib file and add them in MAKEFILE.MK?

    Thanks,

    Chen-Wei

  • Chen-Wei

    sorry for repeated asking same question ,

    where is the hw() declared and where is it defined . ?


    Regards
    Chetan.M
  • Hi Chetan,
    i declared it in /tda/vision_sdk/apps/src/hlos/adas/src/alg_plugins/opencvcanny/include/hllow_world.h
    and defined it in /tda/vision_sdk/apps/src/hlos/adas/src/alg_plugins/opencvcanny/hllow_world.c

    Thanks,
    Chen-Wei
  • Hi Chen-Wei,

    I see a C and CPP file combination ,

    Have you taken care of extern c and other parameters in your hllow_world files .?

    Try google search and see if some thing missed.
    stackoverflow.com/.../call-a-c-function-from-c-code

    Regards
    Chetan.M
  • Hi, Chetan
    Thanks for your suggest, and i add the extern C in my code.

    I think maybe i need to compile them first, just like the website you gave build my code into a .o file and link them, or maybe not.
    If i build my code, i don't know the path of .o file should add in which file to make them linked.
    if i don't build them first, i still got the same error

    Should i need modify any files?

    Thanks,
    Chen-Wei