Compilierfehler bei einbindung von legacy c code nach c++



  • Guten Tag,

    Ich arbeite mit codeblocks und minGW.
    Beim einbinden von legacy c++ code nach c kommt es zu einem compilerfehler:

    D:\work\alexlib\test.o:test.cpp:(.text+0x33)||undefined reference to `hw'|
    ||=== Build finished: 1 errors, 0 warnings ===|
    

    Das ist jetzt ein max. reduziertes beispiel.

    Ich verwende 3 Dateien:
    main.cpp

    #include<iostream>
    #include "hw.h"
    
    int main()
    {
        std::cout<<"hello C++"<<std::endl;
        hw();
        return 0;
    }
    

    hw.c

    #include <stdio.h>
    #include hw.h
    void hw()
    {
        printf("hello C");
        return;
    }
    int main()
    {
        hw();
        return 0;
    }
    

    und hw.h mit den defines um C zu kompensieren:

    #ifdef __cplusplus
     extern "C" {
     #endif
    
    void hw();
    
     #ifdef __cplusplus
     }
     #endif
    

    Der Befehl
    g++ main.cpp hw.c
    führt zu dem quasi-gleichen Ergebnis.

    Wo mache ich einen Fehler?



  • solved

    Irgendwas mit dem headerinclude war schiefgelaufen.


Anmelden zum Antworten