c - 在 C 中获取屏幕分辨率,w/o "windows.h"

标签 c sdl-2 mingw-w64

刚刚使用 SDL2 开发一个小项目...

系统信息:Windows

应用信息:使用 C(纯 C,无 c++)、mingw-x64 和 SDL2。

现在;

首先,SDL.h需要将main函数重命名为WinMain

另一方面,在获取屏幕分辨率时,我倾向于使用 GetSystemMetrics 函数,该函数需要将 windows.h 包含在预处理器部分中此时,我代码中的 WinMain 与之前在 winbase.h 中声明的 WinMain 发生冲突。当我同时使用(SDL.hwindows.h)时,编译器响应:

previous declaration of 'WinMain' was here: int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd);

这是因为,WinMain 是在 winbase.h 中的某个位置声明的,它是通过 windows.h 自动包含的。

有没有办法不用使用GetSystemMetrics/windows.h来获取屏幕分辨率?还有其他想法吗?

最佳答案

好的!我已经意识到我做错了什么......

在链接阶段,我使用了以下库,链接器提示找不到 WinMain 函数。

-lSDL2main
-lSDL2

然后我添加了 mingw32 库,如下所示,问题得到解决(我认为库的顺序很重要)。

-lmingw32
-lSDL2main
-lSDL2

关于c - 在 C 中获取屏幕分辨率,w/o "windows.h",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53408985/

相关文章:

c++ - SDL2 在 OSX 上从不同线程创建纹理

audio - 如何在保持音频格式 PCM = 1(线性量化)的同时将 24 位 WAV 文件转换为 32 位

c - 使用 SDL_strdup 和类似工具获取文件名时出现问题

c++ - 关于 "stdio.h"和 <cstdio> 混合的编译器警告

c - 打印 C 后结构成员的值发生变化

c - 如何从文件中获取 int - string - float?

ubuntu - Debian - 未找到 g++-mingw-w64

交叉编译适用于 Windows 的 VLC 编译 dxgi1_2.idl wine 头时出现错误

c - *ip 的值打印为其指向的变量的地址

C服务器套接字的读函数写脏缓冲区