这可能是重复的,但我所看到的问题的所有答案都没有充分回答我的问题,所以我仍然在发帖。
我的代码是这样的。非常基本的。复制并粘贴其他网站。
#include <GL/glew.h> // include GLEW and new version of GL on Windows
#include <GLFW/glfw3.h> // GLFW helper library
#include <stdio.h>
int main() {
// start GL context and O/S window using the GLFW helper library
if (!glfwInit()) {
fprintf(stderr, "ERROR: could not start GLFW3\n");
return 1;
}
// uncomment these lines if on Apple OS X
/*glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 2);
glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);*/
GLFWwindow* window = glfwCreateWindow(640, 480, "Hello Triangle", NULL, NULL);
if (!window) {
fprintf(stderr, "ERROR: could not open window with GLFW3\n");
glfwTerminate();
return 1;
}
glfwMakeContextCurrent(window);
// start GLEW extension handler
glewExperimental = GL_TRUE;
glewInit();
// get version info
const GLubyte* renderer = glGetString(GL_RENDERER); // get renderer string
const GLubyte* version = glGetString(GL_VERSION); // version as a string
printf("Renderer: %s\n", renderer);
printf("OpenGL version supported %s\n", version);
// tell GL to only draw onto a pixel if the shape is closer to the viewer
glEnable(GL_DEPTH_TEST); // enable depth-testing
glDepthFunc(GL_LESS); // depth-testing interprets a smaller value as "closer"
/* OTHER STUFF GOES HERE NEXT */
// close GL context and any other GLFW resources
glfwTerminate();
return 0;
}
我使用了CodeBlocks。在&#34;包括&#34;文件夹我有这些文件的目录(GL / GLFW)。正如您所看到的,它们在代码的顶部是#included。
然而,这会返回一个很长的列表&#34;未定义的引用&#34;错误。我见过人们提到链接器并提供了一系列代码而没有解释它的位置。我不知道链接器是什么,或者更确切地说,我不知道我必须提出什么代码或将它放在哪里才能使其工作。
非常感谢明确的解释和实际帮助。
答案 0 :(得分:0)
将C ++源代码转换为可执行程序的过程包括多个步骤:
但是,通常你只需运行g ++然后运行不同的程序,每个程序执行一步。这就是为什么你可以指定例如在g ++的命令行中链接器的参数,它们将简单地在链接器上传递。
因此,对于您的问题:您需要链接包含您要使用的符号(函数,方法等)的库。哪些库及其所在位置不同,无需查看错误消息即可。但是,由于您包含了GL标题,因此您很可能需要链接类似libgl ...
的内容链接器参数是-L,用于指定库所在的位置(= directory),以及要链接的库的-l。 &#39; lib&#39;在库名中以及库文件后缀(.so,.a)可以省略,例如, -lpthread链接库libpthread.so。