Dobrý den, předem se omlouvám, že Vás zatěžu touto hloupou otázkou. Sám nemám rád, když někdo chce po druhých, aby za něj dělali špinavou práci.
Můj problém:
Ve VC++ mám projekt. V něm mám tyto soubory:
- Definitions.h
- FrameWork_Functions.h
- Scene.h
- UHL_OPENGL.h
...............................................................
- KeyBoardSource.cpp
- main.cpp
- UHL_OPENGL.cpp
main.cpp
#define GLFW_INCLUDE_GLU
#include <glfw3.h>
#include <stdlib.h>
#include <stdio.h>
#include <iostream>
//Projects H.
#include "UHL_OPENGL.h"
#include "Definitions.h"
#include "scene.h"
#include "FrameWork_Functions.h"
int main()
{
.......
.......
}
UHL_OPENGL.h
#ifndef UHL_OPENGL_H
#define UHL_OPENGL_H
namespace UHL
{
.........
.........
.........
.........
/*Keyboard*/
class Keyboard
{
public:
Keyboard();
bool Key[16];
static void KeyCallBack(GLFWwindow* window, int key, int scancode, int action, int mods);
void KeyPress(int KeyId);
void KeyRelease(int KeyId);
void KeyChange(int KeyId);
bool GetKey(int KeyId);
};
}
#endif
KeyBoardSource.cpp
#include <glfw3.h>
#include <stdlib.h>
#include <stdio.h>
#include <iostream>
#include "UHL_OPENGL.h"
#include "Definitions.h"
void UHL::Keyboard::KeyCallBack(GLFWwindow* window, int key, int scancode, int action, int mods)
{
if (key == GLFW_KEY_ESCAPE && action == GLFW_PRESS)
glfwSetWindowShouldClose(window, GL_TRUE);
if (key == GLFW_KEY_A && action == GLFW_PRESS)
KeyBoard.KeyPress(KEY_A);
}
Definitions.h
#ifndef DEFINITIONS_H
#define DEFINITIONS_H
UHL::Keyboard KeyBoard;
#endif
FrameWork_Functions.h
#ifndef FRAMEWORK_H
#define FRAMEWORK_H
static void error_callback(int error, const char* description)
{
fputs(description, stderr);
}
namespace UHL
{
void Init_GLFW(int width, int height, const char* tittle, bool fullscreen)
{
......
......
......
glfwMakeContextCurrent(window);
glfwSetKeyCallback(window, KeyBoard.KeyCallBack);
Init_GL(window);
.......
.......
}
}
#endif
1>main.obj : error LNK2005: "class UHL::Keyboard KeyBoard" (?KeyBoard@@3VKeyboard@UHL@@A) already defined in KeyBoardSource.obj
1>LINK : warning LNK4098: defaultlib 'MSVCRT' conflicts with use of other libs; use /NODEFAULTLIB:library
Doposud jsem moc nepožíval kombinaci .h souborů s .cpp soubory. Původně jsem chtěl definovat
UHL::Keyboard KeyBoard; v souboru UHL_OPENGL.h. Ovšem když jsem to tam dal, hodilo to LNK:2001. Proto jsem vytvořil soubor Definitions.h.
Předem Vám moc děkuji za odpověď.