Important: Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

Creator builds acting oddly...



  • ...not sure how to put this into words, so I'll just show you the files and the result:

    main.cpp:

    #include "testsha.h"
    int main()
    {
        SHA256Reset();
        return 0;
    }
    

    testsha.h:

    extern int SHA256Reset();
    

    testsha224-256.cpp:

    int SHA256Reset()
    {
      return 0;
    }
    

    When I build, I get this error:

    C:\Users\MZimmers\Qt projects\test\main.cpp:5: error: undefined reference to `SHA256Reset()'
    

    When I change the file testsha224-256.c to a .cpp file, do a clean, a qmake and a build, the error goes away.

    Can someone explain this behavior to me?

    Windows 10, newest version of Creator, MinGW 5.3.0.

    Thanks...this one has me cross-eyed.


  • Qt Champions 2017

    this is not a issue with qt build i feel. it issue with mixing c and cpp in same project.



  • Right you are. After sleeping on it, I did some googling and realized that the inclusion of the header file needs to be enclosed thusly:

    extern "C"
    {
    #include testsha.h
    }
    

    (There are other ways of doing this, but this is cleanest for a C header file you don't wish to edit.)

    This prevents the C++ compiler from altering (some say "mangling") the function name.

    Thanks for looking.


Log in to reply