error C2065: “GWL_WNDPROC”: 未声明的标识符

发布于 2020-05-06  59 次阅读


问题描述:

在编译一个dll的时候,下面的代码

::SetWindowLong(g_hWnd, GWLP_WNDPROC, (long)NewProc);

用32编译可以正常编译,但是64编译的时候提示错误:

error C2065: “GWL_WNDPROC”: 未声明的标识符


解决方法:

我们打开VC头文件WinUser.h,会知道以下定义

看后我们就会明白,如果是64编译的话,就会执行以下代码:

#undef GWL_WNDPROC

所以就可以明白为啥提示GWL_WNDPROC未声明了,但是下面还有以下定义

#define GWLP_WNDPROC        (-4)

所以我们在代码中把GWL_WNDPROC替换成GWLP_WNDPROC就好了,替换后不影响32位编译的.


一沙一世界,一花一天堂。君掌盛无边,刹那成永恒。