c - Udefineret Reference? Men jeg har implementeret funktionen

Indlæg af Hanne Mølgaard Plasc

Problem



Koden



window.h


typedef struct
{
    WNDCLASS* wc;
    HWND hwnd;
    WNDPROC proc;
} PRO\_Window;

PRO\_Window* PRO\_WindowCreate(int width, int height, const char* title);


window.c
Jeg tror ikke, det er vigtigt, selvom ...


PRO\_Window* PRO\_WindowCreate(int width, int height, const char* title) { /* code */ }


flaget


int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrev, LPSTR CmdLine, int nCmdShow)
{
    PRO\_Window* win = PRO\_WindowCreate( 300, 300, "STATIC");
    return 0;
}


Fejlen



GCC



main.o:main.c|| undefined reference to `PRO\_WindowCreate(int, int, char const*)'|


* Reduceret til SSCCE

* Jeg bruger windows api

Bedste reference


Fejlen med Boarland-C compiler synes at være på grund af erklæringen fra wc efter wnd->proc = NULL;. Prøv at flytte deklarationen over initialiseringserklæringen ...

Andre referencer 1


.H-filen har ikke const, mens .c-filen gør.

Andre referencer 2


Din erklæring (i vinduet.h):


PRO\_Window* PRO\_WindowCreate(int width, int height, char* title);


er anderledes end definition (window.c):


PRO\_Window* PRO\_WindowCreate(int width, int height, const char* title)


Bemærk det sidste argument.

Andre referencer 3


Ligner en GCC-linkfejl, men du viser ikke kommandolinjen, der bruges til at kompilere, så det er svært at fortælle.


Du ser også ud til at mangle til #include overskriften i begge C-filerne.

Andre referencer 4


Du skal #include "window.h" filen både i implementeringen og brugeren af ​​PRO\_WindowCreate-funktionen.