DHCP 客户端 API C++ MSDN 示例

DHCP client API C++ MSDN example

这里是 DHCP 客户端的一个简单示例 API, https://msdn.microsoft.com/en-us/library/windows/desktop/aa363345(v=vs.85).aspx

我在 Visual Studio 2012 年使用控制台应用程序 c++ 工作,构建时出现故障:

1>------ Build started: Project: ConsoleApplication2, Configuration: Debug Win32 ------

1>MSVCRTD.lib(crtexew.obj) : error LNK2019: unresolved external symbol _WinMain@16 referenced in function ___tmainCRTStartup

1>D:\visual work place\ConsoleApplication2\Debug\ConsoleApplication2.exe : fatal error LNK1120: 1 unresolved externals

有人知道怎么解决这个问题吗,谢谢

Google-ing这个错误时有很多命中。 Here的一个。

您的 C 代码与您的 VStudio 项目类型不匹配。

您的应用程序的入口点可能是 int main(int argc, char **argv)(这是其最通用的形式之一),在 MS 世界中对应于 控制台应用程序.

但是微软已经定义了其他的应用类型。其中之一是不需要控制台的 GUI(基于 window)。对于那个 MS 定义的入口点为: int CALLBACK WinMain(_In_ HINSTANCE hInstance, _In_ HINSTANCE hPrevInstance, _In_ LPSTR lpCmdLine, _In_ int nCmdShow)。您可以在 MSDN.

上找到有关它的更多详细信息

构建应用程序的可执行文件时,链接器必须知道应用程序的类型。这是由 /SUBSYSTEM 设置指定的。

这是在您根据您的选择创建 (Visual C++) 项目时设置的:

  • Win32 控制台应用程序
  • Win32 项目

而且我认为后者是默认设置。

为了解决问题,您需要更改链接器设置以匹配您的代码(也可能有其他方法,但那样会更复杂)。为此,在 VStudio IDE 中转到您的 Project Properties -> Linker -> System -> SubSystem 并将其从 Windows (/SUBSYSTEM:WINDOWS ) 控制台 (/SUBSYSTEM:CONSOLE).