- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我刚开始使用 C++,但遇到了无法修复的错误。
这是我到目前为止的所有代码(甚至无法让 hello world 工作):
#include "stdafx.h"
#include <windows.h>
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow)
{
MessageBox(NULL, L"Hello World!",
L"Hello World!",
MB_ICONEXCLAMATION | MB_OK);
return 0;
}
但是当我尝试运行它时出现了这个错误:
Test.cpp(11): error C2373: 'WinMain' : redefinition; different type modifiers C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\winbase.h(2588) : see declaration of 'WinMain'
当我查看 WinMain 的声明时,我看到在每个参数之前都有一个“__in”。我尝试添加它,但没有运气。我也尝试用 CALLBACK 替换 WINAPI,但这也没有用。
最佳答案
简单的解决方法是
使用标准的 main
函数。
像这样:
#undef UNICODE
#define UNICODE
#incude <windows.h>
int main()
{
MessageBox(
0,
L"Hello World!",
L"Hello World!",
MB_ICONEXCLAMATION | MB_SETFOREGROUND
);
}
现在您唯一的问题是使用 Microsoft 的工具集将其构建为 GUI 子系统应用程序,这在这方面有点落后(GNU 工具链没有这样的问题)。
为此,通过 Microsoft 的链接
,使用此链接器选项(除了选择 GUI 子系统之外):/entry:mainCRTStartup
。
请注意,您可以将该选项放入名为 LINK
的环境变量中。
编码愉快! :-)
关于c++ - WinMain 重新定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14428429/
WinMain() 实际上是如何调用的?我记得专业黑客使用的一个函数,它以(某物)开头,看起来像 __startupWinMain()。 问题是,我有一个 Win32 EXE(使用 /SUBSYSTE
WinMain 的第三个参数以未处理的字符串形式提供命令行。虽然这对于允许您处理通配符的扩展和其他问题可能很有用,但是否有可能在 Win32 API 中的某个地方潜伏着获得通常的 C argc、arg
所以我有一个 .cpp 文件,其中包含例如函数:drawLine()、drawSquare() 和 main()。在 main() 中,我想调用使用 WinApi 创建窗口的函数(从其他文件),然后调
我刚开始学习使用 C++ 进行 Windows 编程。我有一个疯狂的印象,即 win32 编程是基于调用 Windows 函数并向它们发送参数以及从它们发送参数。就像,当你想创建窗口时,你调用一些处理
我的问题是参数只检索每个参数中的第一个字母,为此我不知道为什么..有人可以详细说明吗? #include #include int WINAPI WinMain(HINSTANCE hInstan
这个问题在这里已经有了答案: what does the function returns with in C program , in case if there is no return sta
总而言之,我有一个关于 WinMain 的问题。在VS2010中,_tWinMain的返回值为“(int) msg.wParam”。我不明白为什么它会返回 wParam。 wParam 是什么?我
我正在努力让我的代码尽可能完美,并且我已经清除了所有错误和(其他)警告。我只剩下这两个: Warning C28253 Inconsistent annotation for 'WinMain':
我刚开始使用 C++,但遇到了无法修复的错误。 这是我到目前为止的所有代码(甚至无法让 hello world 工作): #include "stdafx.h" #include int WINAP
这可能是有史以来最简单的win32程序.. #include int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrev, LPSTR cmdLine,
我有几个非常简单的问题。我在网上搜索了它们,但找到了不同的答案,所以我只想知道该遵循哪个。 所以,首先,我相信 WinMain 不是 C 或 C++ 标准,而只是由 Microsoft 添加来确定何时
你能给我解释一下通常写在 WinMain() 函数末尾的这条语句的意义吗: return (int) msg.wParam; 我习惯于以 return 0; 结束我的控制台应用程序,这对 Win
假设我在一个项目中构建了一个名为 App1 的应用程序,其中包含很多类。我决定要构建另一个名为 App2 的项目,并且我想使用那些相同的类,因此我决定将 App1 转换为一个 lib 文件。我必须删除
我正在 Windows 上开发应用程序,但我也想支持其他平台(我编写的大部分代码都是平台无关的)。不管怎样,我想为了开发的缘故我想让事情简单化(也许我在这种方法上太天真了)所以我的 main.cpp
有什么方法可以在类中隐藏 WinMain() 函数吗?谢谢。 最佳答案 不,没有。一个更好的问题是“你为什么想要”?在 Java 或 C# 中,main 函数是静态类成员,不是因为它更好或更干净,而是
我在想,是否可以使用 win32 程序的入口点 - WinMain - 作为类方法?例如; class cApp { public: cApp(); ~cApp(); cGuiM
我正在学习 C++ 和针对 Windows API 的编程。我的第一个“Hello Windows API”程序只显示一个 MessageBox()。但是,我有一些问题,我正在阅读的书没有解释。 首先
为什么这个程序可以正确显示消息框,但没有设置错误级别? int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTAN
在MFC中,wWinMain定义在appmodul.cpp中。据我所知,该文件内置于 mfc90ud.dll 中。但是,当我运行我的应用程序时,调用堆栈显示 MyApplication.exe!wWi
我删除了 IDE 生成的 _tmain() 方法,因为我发现在添加我的 WinMain 条目后有两个入口点没有意义。是的,这是我的第一个 C++ 应用程序,我是新手,但请保持友好。 这就是我得到的:
我是一名优秀的程序员,十分优秀!