Вопрос

У меня есть окно OpenGL, которое составляет 640x480, что мне нужно в центре в середине экрана. Я ранее использовал:

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.

Это было полезно?

Решение

Кроме того, вместо подключения 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);

Другие советы

Вы должны убедиться, что вы связываете с User32.Lib, статической библиотекой, где GetSystemMetrics() определено. Откройте настройки вашего проекта и убедитесь, что user32.lib указан среди всех .Libs, с которыми вы связываете.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top