2010-02-02 14 views
8

Ich habe ein OpenGL-Fenster, das 640x480 ist, das ich in der Mitte des Bildschirms zentrieren muss. Ich habe vorher verwendet:Zentrieren eines OpenGL-Fensters mit GLUT

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

was gearbeitet.

Aber jetzt ganz plötzlich, als ich ... kompilieren

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

jemand bitte helfen. Das ist sehr ärgerlich und frustrierend für mich, da ich nicht viel über OpenGL und GLUT weiß.

Antwort

19

Auch anstelle der Verknüpfung user32.lib Sie es allein Schwemme mit tun können:

glutGet(GLUT_SCREEN_WIDTH) // returns Screen width 

und

glutGet(GLUT_SCREEN_HEIGHT) // returns Screen height 

Warum hängen unter Windows, wenn Sie Cross-Plattform sein kann?

Daher würde der Code aussehen:

glutInitWindowPosition((glutGet(GLUT_SCREEN_WIDTH)-640)/2, 
         (glutGet(GLUT_SCREEN_HEIGHT)-480)/2); 
+0

Danke! Ich hatte das schon mal versucht und war irgendwie kläglich gescheitert, aber es funktioniert wieder mit diesem Code dank dir. –

1

Sie müssen sicherstellen, dass Sie eine Verbindung mit User32.lib herstellen, der statischen Bibliothek, in der GetSystemMetrics() definiert ist. Öffnen Sie Ihre Projekteinstellungen und stellen Sie sicher, dass die User32.lib unter allen .libs aufgeführt ist, mit denen Sie verlinken.

+0

Wo ist Projekteinstellungen in Visual C++? Ich habe mich nicht mit irgendetwas beschäftigt, außer mit dem eigentlichen Code. Wenn das vorher funktioniert hat, wie kommt es dann plötzlich nicht mehr an? –

+0

Wenn Sie eine alternative Möglichkeit kennen, ein OpenGL-Fenster zu zentrieren, würde ich das ebenfalls begrüßen. Was auch immer funktioniert, ist in Ordnung, nur dass das funktioniert hat und der Compilerfehler meines Wissens nicht bekannt ist. –

+0

Okay, ich habe gefunden, wie man zu Projekteigenschaften und Linker kommt, aber wo befindet sich User32.lib? –