Я создал очень простую программу, содержащую несколько файлов, и сейчас пытаюсь связать с ней библиотеку GLFW.Я только добавил функции GLFW в файл main.cpp и включил туда только библиотеку, и только компиляция и выполнение этого файла с помощью команды g++ main.cpp -lglfw
идет нормально.
До того, как я добавил эту библиотеку, компиляция исвязывание всей программы также прошло нормально, но даже если в других файлах не используются функции GLFW, когда я хочу связать все вместе (g++ -Wall -g -std=c++11 -lglfw main.o hello_world.o console.o
), я внезапно получаю сообщение об ошибке «неопределенная ссылка» на каждую функцию 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.