【发布时间】:2009-12-10 17:14:46
【问题描述】:
我正在尝试使用以下方法来获取主显示屏的高度和宽度:
#include <winuser.h>
size_t width = (size_t)GetSystemMetrics(SM_CXBORDER);
size_t height = (size_t)GetSystemMetrics(SM_CYBORDER);
但是,它因未解决的外部链接错误 (LNK1120) 而失败。我尝试链接到 user32.lib(如文档中的 here),并收到相同的错误,以及链接到 wmbase.lib(如文档中的 here),并收到 wmbase.lib 不存在的错误!我做错了什么?
请注意,我只使用普通的 C,而不是 C++。这是获取主显示器屏幕分辨率(以像素为单位)的正确函数吗?
我目前正在尝试在 MSVC 上编译它,但更喜欢可移植到其他编译器的解决方案。
谢谢。
编辑
所以看起来我正在寻找的参数是SM_CXSCREEN 和SM_CYSCREEN,而不是SM_CXBORDER 和SM_CYBORDER。但是,我仍然无法编译。
如果澄清了任何事情(当链接到 user32.lib 时),这是实际错误:
screen.obj : error LNK2019: unresolved external symbol __imp__GetSystemMetrics@4 referenced in function _getMainDisplaySize
build\lib.win32-2.6\foomodule\bitmap.pyd : fatal error LNK1120: 1 unresolved externals
error: command '"C:\Program Files\Microsoft Visual Studio 9.0\VC\BIN\link.exe"' failed with exit status 1120
(我正在尝试编译 Python/C 模块,这就是为什么你会看到奇怪的目录)
【问题讨论】:
-
如果您提供来自链接器以及链接器命令行的实际错误文本,我们或许能够诊断出来。
-
wmbase.lib 不存在,因为它被用于嵌入式/移动开发的 Windows CE 使用。
标签: c windows visual-c++ getsystemmetrics