我创建了一个包含多个文件的非常简单的程序,我现在正试图将GLFW库链接到它。我只在文件main.cpp中添加了GLFW函数,并且只在那里包含了库,只使用命令g++ main.cpp -lglfw
编译和执行该文件就可以了。
在我添加这个库之前,编译和链接整个程序也很顺利,但即使我想将所有内容链接在一起(g++ -Wall -g -std=c++11 -lglfw main.o hello_world.o console.o
),其他文件中也没有使用GLFW函数,我突然得到了错误'未定义引用'我使用的每个GLFW功能。 (编译main.cpp时没有出错:g++ -Wall -g -std=c++11 -lglfw -c main.cpp
)
这是main.cpp文件:
#include "basis.h"
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <string>
// Open-GL
#include <GLFW/glfw3.h>
/// Setup:
/// sudo apt-get update
/// sudo apt-get install libglfw3
/// sudo apt-get install libglfw3-dev
/// Compile:
/// g++ main.cpp -lglfw
using namespace std;
void errorCallback(int error, const char* description) {
fprintf(stderr, "Error: %s\n", description);
}
void test() {
GLFWwindow* window = glfwCreateWindow(640, 480, "My Title", NULL, NULL);
if (!window) {
cout << "Window creation failed!" << endl;
}
runConsole();
}
int main(int argc, char* argv[]) {
glfwSetErrorCallback(errorCallback);
if (!glfwInit()) {
cout << "GLFW initialization failed!" << endl;
exit(EXIT_FAILURE);
}
test();
glfwTerminate();
return 0;
}
此外,我不知道图书馆在我的机器上的位置。此外,Linux机器是Virtual Box,源代码位于我的主机Windows系统上的共享文件夹中,但是在我在Linux上编译它之前,他从未创建过库的问题。
答案 0 :(得分:1)
糟糕,在重新阅读我想到的新解决方案的问题时,它起作用了:)正确的链接器命令是:g++ -Wall -g -std=c++11 main.o hello_world.o console.o -lglfw