[C/C++] Opengl Eclipse MinGW

posi90

Erfahrenes Mitglied
Hallo,

Ich steige gerade von MSVS 2010 auf Eclipse CDT mit MinGW als Kompiler um.

Ich möchte meine Opengl Anwendung von MSVS nun nach Eclipse portieren. Weiters verwende ich GLFW und GLEW, die einwandfrei funktionieren.

Jedoch stürzt mein Programm ab, sobald eine glx Funktion (z.B. glGetError()) aufgerufen wird.
Da mir Eclipse kaum Fehlermeldungen disbezüglich ausgibt und ich im Google auch nichts Brauchbares gefunden habe, wollte ich mir hier an das Forum wenden.

Die libopengl32.a wurde hinzugefügt. Die opengl32.dll wird von Eclipse als Fehlerhaft gekennzeichnet, wenn diese im Projektverzeichnis ist und lässt sich dann nicht kompilieren.

Ich vermute, dass es an der opengl32.dll liegt, da die glx Funktionen sich darin befinden. Jedoch benötige ich eine Version die mit meinem Kompiler kompatibel ist.

Fehlerausgabe:
Code:
13:00:31 **** Incremental Build of configuration Debug for project opengl2 ****
Info: Internal Builder is used for build
g++ "-LC:\\Users\\Phil\\workspace\\opengl2" -o opengl2.exe "src\\opengl.o" "src\\main.o" -lopengl32 -lgdi32 -lglu32 -lglfw -lglew32 
C:\Users\Phil\workspace\opengl2/opengl32.dll: file not recognized: File format not recognized
collect2.exe: error: ld returned 1 exit status

Würde mich über jeden Tipp freuen.

mfg. posi90
 
Die .dll wird beim Starten des Programmes geladen und wird nicht zum Kompilieren verwendet. Nimm die Datei aus dem Kompiliervorgang raus.

Ausser du nimmst die VC++-dlls und nicht die MinGW, dann funktioniert das Laden nicht. Nimm die mit MinGW erstellten .dlls aus dem OpenGL-Ordner.

Gruss
cwriter
 
Ok, die opengl32.dll is aus dem Projektordner raus. Gelinkt wurden libopengl32.a und libglfw.a von MinGW.
Bekomme nun folgende Fehlermeldungen:

Code:
16:12:03 **** Incremental Build of configuration Debug for project opengl5 ****
Info: Internal Builder is used for build
g++ "-LC:\\MinGW\\lib\\win32" -o opengl5.exe "src\\opengl5.o" -lopengl32 -lglfw 
Warning: .drectve `-aligncomm:"__glfwThrd",5 ' unrecognized
Warning: .drectve `-aligncomm:"__glfwLibrary",5 ' unrecognized
Warning: .drectve `-aligncomm:"__glfwInput",5 ' unrecognized
Warning: .drectve `-aligncomm:"__glfwWin",5' unrecognized
C:\MinGW\lib\win32/libglfw.a(window.o):window.c:(.text+0x92d): undefined reference to `glClear@4'
C:\MinGW\lib\win32/libglfw.a(win32_window.o):win32_window.c:(.text+0x20c): undefined reference to `wglMakeCurrent@8'
C:\MinGW\lib\win32/libglfw.a(win32_window.o):win32_window.c:(.text+0x21c): undefined reference to `wglDeleteContext@4'
C:\MinGW\lib\win32/libglfw.a(win32_window.o):win32_window.c:(.text+0xf54): undefined reference to `wglGetProcAddress@4'
C:\MinGW\lib\win32/libglfw.a(win32_window.o):win32_window.c:(.text+0xfc2): undefined reference to `wglGetProcAddress@4'
C:\MinGW\lib\win32/libglfw.a(win32_window.o):win32_window.c:(.text+0xff6): undefined reference to `wglGetProcAddress@4'
C:\MinGW\lib\win32/libglfw.a(win32_window.o):win32_window.c:(.text+0x1047): undefined reference to `wglGetProcAddress@4'
C:\MinGW\lib\win32/libglfw.a(win32_window.o):win32_window.c:(.text+0x1060): undefined reference to `wglGetProcAddress@4'
C:\MinGW\lib\win32/libglfw.a(win32_window.o):win32_window.c:(.text+0x165c): undefined reference to `wglMakeCurrent@8'
C:\MinGW\lib\win32/libglfw.a(win32_window.o):win32_window.c:(.text+0x1842): undefined reference to `wglCreateContext@4'
C:\MinGW\lib\win32/libglfw.a(win32_window.o):win32_window.c:(.text+0x1c90): undefined reference to `glGetIntegerv@8'
C:\MinGW\lib\win32/libglfw.a(win32_window.o):win32_window.c:(.text+0x1ca7): undefined reference to `glGetFloatv@8'
C:\MinGW\lib\win32/libglfw.a(win32_window.o):win32_window.c:(.text+0x1cce): undefined reference to `glClearColor@16'
C:\MinGW\lib\win32/libglfw.a(win32_window.o):win32_window.c:(.text+0x1cdd): undefined reference to `glClear@4'
C:\MinGW\lib\win32/libglfw.a(win32_window.o):win32_window.c:(.text+0x1d10): undefined reference to `glClearColor@16'
C:\MinGW\lib\win32/libglfw.a(glext.o):glext.c:(.text+0xe): undefined reference to `glGetString@4'
C:\MinGW\lib\win32/libglfw.a(glext.o):glext.c:(.text+0x189): undefined reference to `glGetIntegerv@8'
C:\MinGW\lib\win32/libglfw.a(glext.o):glext.c:(.text+0x1b8): undefined reference to `glGetIntegerv@8'
C:\MinGW\lib\win32/libglfw.a(glext.o):glext.c:(.text+0x246): undefined reference to `glGetString@4'
C:\MinGW\lib\win32/libglfw.a(glext.o):glext.c:(.text+0x28c): undefined reference to `glGetIntegerv@8'
C:\MinGW\lib\win32/libglfw.a(win32_glext.o):win32_glext.c:(.text+0x7b): undefined reference to `wglGetProcAddress@4'
collect2: ld returned 1 exit status

16:12:04 Build Finished (took 283ms)

Mein Programm sieht so aus:

Code:
#include <iostream>
#include <stdio.h>

#define GLFW_NO_GLU
#define GLEW_STATIC

#include <GL\glfw.h>
#include <gl\glu.h>

using namespace std;

int main()
{
	glfwInit();
	if( !glfwOpenWindow(800, 600, 8,8,8,8,24,0, 1 ? GLFW_WINDOW : GLFW_FULLSCREEN))
	{
		glfwTerminate();
		throw;
	}
	glfwSleep(1000);
	glfwTerminate();
	return 0;
}

Weiters finde ich keine opengl32.dll im MinGW Ordner. Woher bekomm ich die her? Da die von Microsoft Visual Studio nicht funktioniert.

mfg. posi90
 
Gelöst =)

Es lag an der Reihenfolge der Bibliotheken, erst musste glfw, dann opengl und dann glu32 gelinkt werden.

Nun hab ich nur mehr 4 Warnungen, welche ich nicht verstehe, ist aber nicht so schlimm.
Code:
Warning: .drectve `-aligncomm:"__glfwThrd",5 ' unrecognized
Warning: .drectve `-aligncomm:"__glfwLibrary",5 ' unrecognized
Warning: .drectve `-aligncomm:"__glfwInput",5 ' unrecognized
Warning: .drectve `-aligncomm:"__glfwWin",5' unrecognized
 
Zurück