Неопределенные ссылки?Но я реализовал функцию - PullRequest
0 голосов
/ 07 марта 2012

Код

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 Не думаю, что это важно, хотя...

PRO_Window* PRO_WindowCreate(int width, int height, const char* title) { /* code */ }

main.c

int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrev, LPSTR CmdLine, int nCmdShow)
{
    PRO_Window* win = PRO_WindowCreate( 300, 300, "STATIC");
    return 0;
}

Ошибка

GCC

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

* Уменьшено до SSCCE * Я использую Windows API

Ответы [ 5 ]

1 голос
/ 07 марта 2012

Ошибка компилятора Boarland-C, по-видимому, из-за объявления wc после wnd->proc = NULL;. Попробуйте переместить объявление выше оператора инициализации ...

1 голос
/ 07 марта 2012

Ваша декларация (в window.h):

PRO_Window* PRO_WindowCreate(int width, int height, char* title);

отличается от определения (window.c):

PRO_Window* PRO_WindowCreate(int width, int height, const char* title)

Обратите внимание на последний аргумент.

1 голос
/ 07 марта 2012

.h файл не имеет const, в то время как .c файл имеет.

0 голосов
/ 07 марта 2012

Вы должны #include "window.h" подать файл как в реализации, так и в пользователе функции PRO_WindowCreate.

0 голосов
/ 07 марта 2012

Похоже, ошибка компоновки GCC, но вы не показываете командную строку, используемую для компиляции, поэтому трудно сказать.

Кроме того, вы, похоже, отсутствует #include заголовок в обоих файлах C.

...