未定义参考?但我已经实现了这个功能

时间:2012-03-07 12:55:36

标签: c windows winapi function-pointers undefined-reference

守则

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 个答案:

答案 0 :(得分:1)

.h文件没有const,而.c文件没有。{/ p>

答案 1 :(得分:1)

你的声明(在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)

请注意最后一个参数。

答案 2 :(得分:1)

Boarland-C编译器的错误似乎是因为wc之后wnd->proc = NULL;的声明。尝试在初始化语句上面移动声明......

答案 3 :(得分:0)

看起来像GCC链接错误,但是你没有显示用于编译的命令行,所以很难分辨。

此外,您似乎错过了#include C文件中的标题。

答案 4 :(得分:0)

你应该在PRO_WindowCreate函数的实现和用户中#include "window.h"提交文件。