首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在C中运行WinMain的问题

在C中运行WinMain的问题
EN

Stack Overflow用户
提问于 2022-06-14 19:53:23
回答 3查看 193关注 0票数 1

目前,我在C语言(特别是Visual中)中遇到了WinMain问题。

比如说..。

代码语言:javascript
运行
复制
#include <stdio.h> 
#include <Windows.h>

int WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, 
    PSTR lpCmdLine, INT nCmdShow)
{

    return(0);
}

1>------ Build started: Project: GameB, Configuration: Debug x64 ------
1>LIBCMTD.lib(exe_main.obj) : error LNK2019: unresolved external symbol main referenced in function "int __cdecl invoke_main(void)" (?invoke_main@@YAHXZ)
1>E:\James\VisualStudio\CProjects\GameB\x64\Debug\GameB.exe : fatal error LNK1120: 1 unresolved externals
1>Done building project "GameB.vcxproj" -- FAILED.
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

只是这个基本的设置给了我一个“不一致的WinMain注释”警告。我已经寻求任何帮助2天了,我最接近的答案是人们谈论WinMain的上下文中的C++。我觉得这是Visual的一个问题,因为我最初只是使用VS代码,并设法获得一个应用程序(一个生成弹出窗口)来编译和运行。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2022-06-14 20:04:43

要使用WinMain程序入口点,需要告诉链接器以"Windows“子系统为目标,而不是构建控制台应用程序。否则,链接器将查找(但未能找到)C程序的标准main入口点。

在解决方案资源管理器中,右键单击项目并选择"Properties“。然后导航到"Linker -> System“页面,并选择”/SUBSYSTEM:WINDOWS“作为目标:

关于“不一致注释”警告,请参见以下Q/A:Inconsistent annotation for 'WinMain'

另外,正如注意到的in the answer by SNO一样,您应该将WINAPI属性添加到WinMain函数中。

票数 0
EN

Stack Overflow用户

发布于 2022-06-14 19:59:18

你刚把你的酒杯设错了。这应该是可行的:

代码语言:javascript
运行
复制
int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PWSTR pCmdLine, int nCmdShow);

代码语言:javascript
运行
复制
INT WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
    PSTR lpCmdLine, INT nCmdShow)
{
    return 0;
}

不要忘记包含并将子系统更改为windows.

票数 2
EN

Stack Overflow用户

发布于 2022-06-14 20:00:41

您需要在设置中设置从ConsoleWindows的子系统,方法是右键单击解决方案资源管理器中的项目,选择properties,然后转到Linker->System并将SubSystem设置为Windows(/SUBSYSTEM:WINDOWS)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72622666

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档