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

标签 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

有什么提示吗?

最佳答案

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

你声明了它,编译器很高兴,但没有实现它,链接器不高兴。或者你写了它但打错了定义。它不是在标准库之一中实现的功能,您必须提供它。窗口过程是用来为窗口提供自定义行为的。

关于c++ - 在 VS2010 控制台应用程序中链接 windows.h (WNDCLASSEX) 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10984926/

相关文章:

c++ - 大数除法

c++ - 使用非阻塞套接字。 errno 在调用 recvfrom 后总是 EAGAIN

c++ - 预编译器会评估位移位和算术运算吗?

visual-studio-2010 - 如何解决这个错误, "The base class ' Microsoft.Office.Tools.Ribbon.RibbonCollectionBase'无法设计”

c# - 为什么 Visual Studio 设置都序列化为字符串?

c++ - 在 C++ 中读取 Fortran 二进制文件

visual-studio-2010 - 数据库模式不明确索引提示问题

c++ - 关闭 C++ 控制台应用程序时会发生什么

c# - 将文件拖放到控制台应用程序

C# 控制台应用程序 : Is there a way to detect whether the exe was run from a command line or not?