GOOGLE ADS

понедельник, 11 апреля 2022 г.

Как скомпилировать программу GLFW в Windows через командную строку?

Я пытаюсь сделать очень простую игру, используя OpenGL и GLFW. Я получил свой текущий код для компиляции без проблем в Ubuntu, но когда я пробую его в Windows, я получаю всевозможные неразрешенные внешние ошибки.

Я включил как в мои, так main.cppи в мои game.hфайлы:

#include<GLFW/glfw3.h>

Я пробовал использовать:

#define GLFW_DLL
#include<GLFW/glfw3.h>

а затем ссылка glfwdll.libвместо glfw3.lib, и это решило некоторые ошибки, но не все из них. В любом случае, я использую статическую библиотеку в Ubuntu, поэтому я хочу использовать ее и в Windows.

Изучив его, я попытался включить User32.libи kernel32.libудалить библиотеки по умолчанию (используя Zl) и кучу других вещей, которые я не могу вспомнить (но они не работали).

Моя текущая команда компиляции выглядит так:

@echo off
cl /Zl /MT game.cpp /I C:\dev\include /link "C:\Program Files (x86)\Windows Kits\8.1\Lib\winv6.3\um\x64\User32.lib" "C:\Program Files (x86)\Windows Kits\8.1\Lib\winv6.3\um\x64\kernel32.lib" C:\dev\lib\glfw3.lib C:\dev\lib\OpenGL32.lib
cl /Zl main.cpp /I C:\dev\include /link C:\dev\lib\glfw3.lib C:\Users\Daniel\projects\game\game.obj C:\dev\lib\OpenGL32.lib "C:\Program Files (x86)\Windows Kits\8.1\Lib\winv6.3\um\x64\User32.lib" "C:\Program Files (x86)\Windows Kits\8.1\Lib\winv6.3\um\x64\kernel32.lib"

При этом объектный файл компилируется без проблем, но с основным файлом я продолжаю получать неразрешенные внешние ошибки для всех функций glfw и openGl (независимо от того, использовал я их или нет) в моем объектном файле, и они из объектного файла и файл glfw.lib.

Что меня действительно смущает в этом, так это то, что файл объекта моего игрового класса компилируется без каких-либо проблем, но затем возникают ошибки, когда я связываю его.

Кто-нибудь знает, как это скомпилировать?


Решение проблемы

Я изучал это некоторое время и нашел кого-то, кто сказал, что это работает, если вы используете 32-битные двоичные файлы. Я использовал 64-битные двоичные файлы, когда у меня возникла эта проблема. Я загрузил 32-битные двоичные файлы и попробовал их теми же методами, и они скомпилировались без проблем.

Я понятия не имею, почему это так, но для тех, у кого возникла моя проблема, 32-битные двоичные файлы работали.

Комментариев нет:

Отправить комментарий

Laravel Datatable addColumn returns ID of one record only

Я пытаюсь использовать Yajra Datatable для интеграции DataTable на свой веб-сайт. Я смог отобразить таблицу, но столкнулся с проблемой. В по...