warning C4013: 'allocateKLTImage' undefiniert; Annahme: extern mit Rückgabetyp int



  • Habe gerade nach dieser Compilerwarnung (C4013) gesucht und diesen Thread hier gefunden. Leider haben mir CStolls Vorschläge (s.o.) nicht geholfen.

    Ich versuche gerade mal meinen Code gekürzt wiederzugeben:

    Datei conf.h:

    typedef struct _KLT_Image{
     /* ... */
    } KLT_IMAGE, * PTR_KLT_IMAGE;
    

    Datei memory.h

    #ifndef __MEMORY_H__
    #define __MEMORY_H__
    
    #include "conf.h"
    
    #ifdef __cplusplus
    extern "C"
    {
    PTR_KLT_IMAGE allocateKLTImage(UINT rows, UINT cols);
    /***/
    }
    #endif // __cplusplus
    
    #endif // __MEMORY_H__
    

    Datei imgio.h:

    #ifndef __IMGIO_H__
    #define __IMGIO_H__
    
    #include "conf.h"
    
    #ifdef __cplusplus
    extern "C"
    {
    
    void ppmRead(char* filename, PTR_KLT_IMAGE img);
    
    /***/
    
    }
    #endif // __cplusplus
    #endif // __IMGIO_H__
    

    Datei imgio.c:

    #include <stdio.h>
    #include <stdlib.h>
    #include "imgio.h"
    #include "memory.h"
    
    void ppmRead(char* filename, PTR_KLT_IMAGE img) {
      /***/
      img = allocateKLTImage( rows, cols );
      /***/
    }
    

    Jetzt bekomme ich die Fehlermeldung:

    warning C4013: 'allocateKLTImage' undefiniert; Annahme: extern mit Rückgabetyp int

    Wie gesagt, mit o.g. Vorschlägen liess sich das Problem nicht lösen. Tut mir Leid, wenn das oben vielleicht etwas viel Code ist (?), aber ich wär sehr dankbar, wenn mir jemand diese Warnung erklären könnte.

    Viele Grüße, mbu.



  • mbu schrieb:

    #ifndef __MEMORY_H__
    #define __MEMORY_H__
    
    #include "conf.h"
    
    #ifdef __cplusplus
    extern "C"
    {
    PTR_KLT_IMAGE allocateKLTImage(UINT rows, UINT cols);
    /***/
    }
    #endif // __cplusplus
    
    #endif // __MEMORY_H__
    

    mach daraus:

    #ifndef __MEMORY_H__
    #define __MEMORY_H__
    
    #include "conf.h"
    
    #ifdef __cplusplus
    extern "C"
    {
    #endif
    
    PTR_KLT_IMAGE allocateKLTImage(UINT rows, UINT cols);
    /***/
    
    #ifdef __cplusplus
    }
    #endif // __cplusplus
    
    #endif // __MEMORY_H__
    

    oder

    #ifndef __MEMORY_H__
    #define __MEMORY_H__
    
    #include "conf.h"
    
    PTR_KLT_IMAGE allocateKLTImage(UINT rows, UINT cols);
    /***/
    
    #endif // __MEMORY_H__
    

    sonst sieht dein C compiler den prototypen nicht.
    (immer dieser nervige c++ mist 😡 )
    🙂



  • Leider ist die Warnung auch nach Deinen Änderungen noch vorhanden. Gibt es vielleicht noch eine andere Möglichkeit, die ich nicht bedacht habe?



  • Ich habe den neuen Teil vom alten Thread abgesplittet.

    @ mbu
    In Zukunft bitte einen neuen Thread aufmachen. Alte rauskramen ist eher verwirrend als hilfreich.



  • mbu schrieb:

    Leider ist die Warnung auch nach Deinen Änderungen noch vorhanden. Gibt es vielleicht noch eine andere Möglichkeit, die ich nicht bedacht habe?

    hast du den header auch #included?
    wenn's echt nicht will, dann könntest du oben in deinen code folgende zeile reinsetzen.

    extern PTR_KLT_IMAGE allocateKLTImage(UINT rows, UINT cols);
    

    nur so als notlösung. poste doch mal deinen aktuellen header hier hin...
    🙂


Anmelden zum Antworten