【发布时间】:2020-08-03 21:57:09
【问题描述】:
我正在尝试使用简单的 Windows API。
但是当我使用“MessageBoxA”时,我的代码不会创建二进制文件。而且它不会产生任何错误信息。
如果我不使用“MessageBoxA”,代码会创建二进制文件。
我在 Windows 10 上使用 gcc 版本 6.3.0。这是我的代码。
#include <stdio.h>
#include <windows.h>
int main() {
printf("hello\n");
MessageBoxA( 0, "hello", "aa", 0); // If I subtract this line, it works fine.
return 0;
}
+) 如果当前目录中存在xxx.exe 文件并且我命令以下命令,该命令将删除xxx.exe 文件。
gcc myfile.c -o xxx.exe
- 2020-04-27) 我附上了一个截图来显示我的编译结果。
【问题讨论】:
-
如果你没有得到二进制文件,那么编译器必须输出某种错误信息,你也应该在你的问题中包含这些信息。
-
当您尝试链接您的程序时,您是否收到任何关于
MessageBoxA丢失的消息?如果是这样,那么您需要链接到提供它的库。 -
你如何编译你的程序?您必须链接到
user32,可能是-luser32和 gcc。 -
如果您在 VS Code 或其他以 UTF-16 格式保存的编辑器中进行编辑,gcc 将无法读取它。 (确保您保存为 UTF-8 或 ASCII)
-
如果你真的没有收到错误信息,那还有输出吗?如果您故意引入语法错误(例如删除 printf 之后的分号或类似的东西),您会收到错误消息吗?