【发布时间】:2015-02-20 19:45:56
【问题描述】:
我对 c++ 比较陌生,所以请耐心等待。
我有一个带有构造函数的类:
Window(int width, int height, const std::string& title);
在头文件中定义。
然后我有代码:
#include "window.h"
int main(int argc, char** argv) {
new Window(800, 600, "Elysian Engine");
}
在主目录中。
在构建时,我收到错误“未定义对 'Window(int, int, std::string const&)' 的引用”,我不明白,因为我认为我正确地导入了它和所有内容。我知道这是一个链接错误,但我不知道为什么。
谢谢!
--- 编辑 ---
window.cpp的代码:
#include "window.h"
#include <SDL2/SDL.h>
#include <SDL/SDL.h>
#include <GL/glew.h>
Window::Window(int width, int height, const std::string& title) :
width(width),
height(height),
title(title),
isCloseRequested(false) {
SDL_Init(SDL_INIT_EVERYTHING);
SDL_GL_SetAttribute(SDL_GL_RED_SIZE, 8);
SDL_GL_SetAttribute(SDL_GL_GREEN_SIZE, 8);
SDL_GL_SetAttribute(SDL_GL_BLUE_SIZE, 8);
SDL_GL_SetAttribute(SDL_GL_ALPHA_SIZE, 8);
SDL_GL_SetAttribute(SDL_GL_BUFFER_SIZE, 32);
SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, 16);
SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);
SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_CORE);
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 3);
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 2);
window = SDL_CreateWindow(title.c_str(), SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, width, height, SDL_WINDOW_OPENGL);
context = SDL_GL_CreateContext(window);
SDL_GL_SetSwapInterval(1);
GLenum res = glewInit();
if (res != GLEW_OK) {
fprintf(stderr, "Error: '%s'\n", glewGetErrorString(res));
}
}
Window::~Window() {
SDL_GL_DeleteContext(context);
SDL_DestroyWindow(window);
SDL_Quit();
}
【问题讨论】:
-
这已被标记为重复,但我看过这个,并没有看到答案。 @πάντα ῥεῖ 能否强调一下它在哪里回答了我的问题?
-
“因为我认为我正确地导入了它和所有内容” 仅
#include "window.h"语句是不够的。请从喜欢的骗子那里了解其他必要的内容。 -
不,这是我创建的一个类。您想查看 Window 的 .cpp 文件吗?
-
@lpapp 实际上,在得到 OP 方面的更多澄清后,我撤回了我的欺骗投票;-) ...
-
哦,不,那我不能叫你 MUR(未定义的参考先生)? :(
标签: c++ codeblocks undefined-reference