在VS2010控制台应用程序中链接windows.h(WNDCLASSEX)代码

时间:2012-06-11 17:40:49

标签: c++ visual-studio-2010 console-application

我有一个VS2010 Win32控制台应用程序。在这个控制台应用程序中,我尝试将一个窗口作为子窗口附加到另一个 Win32应用程序。但我没有得到应用程序链接(它编译,只是链接器问题AFAIK):

Error   1   error LNK2019: unresolved external symbol "long __stdcall viewproc(struct HWND__ *,unsigned int,unsigned int,long)" (?viewproc@@YGJPAUHWND__@@IIJ@Z) referenced in function "void __cdecl createFSXWindow(void)" (?createFSXWindow@@YAXXZ)  H:\Projects\VisualStudioNet2010\FSXTests\Menu Items\Menu Items\MenuItems.obj    Menu Items

我在Linker / include下添加了Win32 Windows项目中的所有库:

kernel32.lib;user32.lib;gdi32.lib;winspool.lib; comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib; odbccp32.lib;%(AdditionalDependencies)

备注:为了澄清,我不会(!)尝试将窗口附加到控制台窗口,而是另一个Win32应用程序,因此它不是"Make a win32 console app display a window"

一旦我添加了窗口代码,问题就出现了:

#include <windows.h>
#include <tchar.h>
#include <stdio.h>
#include <strsafe.h>
....

// window
WNDCLASSEX wc;
wc.style = CS_HREDRAW | CS_VREDRAW ;
wc.lpfnWndProc = viewproc;

当我检查链接器的命令行时,我的控制台应用程序和Win32应用程序之间的唯一区别是SUBSYSTEM:CONSOLESUBSYSTEM:WINDOWS

任何提示?

1 个答案:

答案 0 :(得分:2)

链接器错误只是告诉您忘记编写 viewproc()函数。

你宣布它,编译器很高兴,但没有实现它,链接器不满意。或者你写了它,但错误输入了定义。它不是在其中一个标准库中实现的函数,您必须提供它。窗口过程就是您用来提供窗口自定义行为的方法。