我有一个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了解不多。
答案 0 :(得分:21)
另外,不是链接user32.lib而是单独使用glut:
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);
答案 1 :(得分:1)
您需要确保链接User32.lib,即定义GetSystemMetrics()
的静态库。打开项目设置并确保User32.lib列在您要链接的所有.lib中。