14

我有一个 640x480 的 openGL 窗口,我需要在屏幕中间居中。我以前用过:

glutInitWindowPosition((GetSystemMetrics(SM_CXSCREEN)-640)/2,
                       (GetSystemMetrics(SM_CYSCREEN)-480)/2);

哪个有效。

但是现在当我编译时突然...

Linking...
1>Project1.obj : error LNK2028: unresolved token (0A000372) "extern "C" int __stdcall GetSystemMetrics(int)" (?GetSystemMetrics@@$$J14YGHH@Z) referenced in function "int __cdecl main(int,char * *)" (?main@@$$HYAHHPAPAD@Z)
1>Project1.obj : error LNK2019: unresolved external symbol "extern "C" int __stdcall GetSystemMetrics(int)" (?GetSystemMetrics@@$$J14YGHH@Z) referenced in function "int __cdecl main(int,char * *)" (?main@@$$HYAHHPAPAD@Z)
1>C:\Users\My Computer\Documents\School Stuff\CS445\Project1\Debug\Project1.exe : fatal error LNK1120: 2 unresolved externals

有人请帮忙。这对我来说非常烦人和令人沮丧,因为我对 OpenGL 和 GLUT 了解不多。

4

2 回答 2

25

此外,您可以仅使用 glut 来代替链接 user32.lib:

glutGet(GLUT_SCREEN_WIDTH) // returns Screen width

glutGet(GLUT_SCREEN_HEIGHT) // returns Screen height

既然可以跨平台,为什么还要依赖 Windows?

因此,您的代码将如下所示:

glutInitWindowPosition((glutGet(GLUT_SCREEN_WIDTH)-640)/2,
                       (glutGet(GLUT_SCREEN_HEIGHT)-480)/2);
于 2010-02-02T05:07:56.783 回答
1

您需要确保链接到 User32.lib,GetSystemMetrics()即定义的静态库。打开您的项目设置并确保 User32.lib 列在您要链接的所有 .lib 中。

于 2010-02-02T04:50:31.713 回答