Хорошо, я пытался разделить контекст окна между различными исходными файлами, главным образом моим основным файлом C++ и основным gameloop, он выглядит так (урезанный) , это сделано в OpenGL 3.3 и GLFW 3 с использованием Code :: Blocks 13.12. Я пытаюсь сделать это, чтобы сократить размер моих отдельных файловКак разделить контекст окна между исходными файлами в GLFW 3
Everytime я пытаюсь скомпилировать я получаю:
mutiple definitions of 'window'
внутри файла mainLoop.cpp.
window.h
#ifndef WINDOW_H
#define WINDOW_H
//include glfw etc...
GLFWwindow* window;
#endif //WINDOW.h
mainLoop.cpp
//include glfw etc...
#include "WINDOW.h"
void mainLoop()
{
do{
//some code that uses 'window' context
}while(glfwGetKey(window, GLFW_KEY_ESCAPE) != GLFW_PRESS && glfwWindowShouldClose(window) == 0); //<- "window" causing problems
}
//relevant cleanup
main.cpp
//include necessary headers (glfw, glu, glew, and others)
#include "WINDOW.h"
void mainLoop();
int main(void)
{
//initialize opengl and whatnot.
window = glfwCreateWindow(512, 288, "NULL", NULL, NULL);
glfwMakeContextCurrent(window);
mainLoop();
}
Я не знаю, почему я не могу использовать контекст таким образом, он работает, если мой код «mainLoop» сам по себе внутри основного (с использованием WINDOW.hpp). Помощь очень ценится.
Это не имеет ничего общего с GLFW. Теперь вы включаете 'window.h' в два исходных файла, поэтому переменная' window' определяется дважды. Если вы действительно хотите глобальную переменную, вы можете посмотреть на соответствующий вопрос: [Как использовать extern для обмена глобальными переменными между исходными файлами в C++?] (Http://stackoverflow.com/questions/28106468/how-can- i-use-extern-to-share-globe-variables-between-source-files-in-c) – Leiaz
@Leiaz, использующий extern в окне «GLFWwindow *», просто дает мне неопределенные ссылки на «окно» повсюду по какой-либо причине. – MetroidChild
Это потому, что с переменной 'extern' только что объявлена переменная, она все равно должна быть определена где-то (в файле cpp), но только один раз. – Leiaz