Bonjour,
C'est la première fois que je viens sur ce forum alors je dois d'abords dire que j'adore le code SFML pour ouvrir une fenêtre.
J'ai suivi le tuto pour compiler le SFML en static et tout c'est bien passé (c'est bien expliqué pour ceux qui trouvent le linkage compliqué en c++, comme moi
et j'ai appris quelques trucs au passage
).
Puis j'ai compilé un autre code indépendant de la SFML avec le dernier GLEW fraichement téléchargé, tout ce passe bien.
Ensuite j'ai essayé de combiner les deux... et là c'est le drame.
J'ai des erreurs en essayant de compiler SFML et GLEW en static avec code::blocks
J'utilise :
- les define SFML_STATIC et GLEW_STATIC
- j'ai mis le glew.c dans mon projet et renommé glew.h dans Mingw (pour être sûr d'utiliser le bon)
- j'ai ajouté "opengl32" et "glu32" en dessous des options de link sfml static
Le code très basique:
#include <SFML/Graphics.hpp>
#include <GL/glew.h>
int main()
{
sf::RenderWindow window(sf::VideoMode(300, 200), "SFML works!");
sf::Text text("Hello SFML");
while (window.isOpen())
{
sf::Event event;
while (window.pollEvent(event))
{
if (event.type == sf::Event::Closed)
window.close();
}
window.clear();
window.draw(text);
window.display();
}
return 0;
}
Les erreurs:
-------------- Build: Release in sfml_opengl (compiler: GNU GCC Compiler)---------------
Compiling: glew.c
cc1.exe: attention : command line option '-std=c++0x' is valid for C++/ObjC++ but not for C [enabled by default]
Compiling: sfml_opengl.cpp
Linking executable: bin\Release\sfml_test.exe
C:\sfml_2_0\lib/libsfml-graphics-s.a(glew.c.o):glew.c:(.bss+0xd78): multiple definition of `__glewWindowPos2dARB'
obj\Release\glew.o:glew.c:(.bss+0x15e0): first defined here
C:\sfml_2_0\lib/libsfml-graphics-s.a(glew.c.o):glew.c:(.bss+0xd7c): multiple definition of `__glewWindowPos2dvARB'
obj\Release\glew.o:glew.c:(.bss+0x15dc): first defined here
C:\sfml_2_0\lib/libsfml-graphics-s.a(glew.c.o):glew.c:(.bss+0xd80): multiple definition of `__glewWindowPos2fARB'
obj\Release\glew.o:glew.c:(.bss+0x15d8): first defined here
C:\sfml_2_0\lib/libsfml-graphics-s.a(glew.c.o):glew.c:(.bss+0xd84): multiple definition of `__glewWindowPos2fvARB'
obj\Release\glew.o:glew.c:(.bss+0x15d4): first defined here
C:\sfml_2_0\lib/libsfml-graphics-s.a(glew.c.o):glew.c:(.bss+0xd88): multiple definition of `__glewWindowPos2iARB'
obj\Release\glew.o:glew.c:(.bss+0x15d0): first defined here
C:\sfml_2_0\lib/libsfml-graphics-s.a(glew.c.o):glew.c:(.bss+0xd8c): multiple definition of `__glewWindowPos2ivARB'
obj\Release\glew.o:glew.c:(.bss+0x15cc): first defined here
C:\sfml_2_0\lib/libsfml-graphics-s.a(glew.c.o):glew.c:(.bss+0xd90): multiple definition of `__glewWindowPos2sARB'
obj\Release\glew.o:glew.c:(.bss+0x15c8): first defined here
Je met pas tout c'est comme ça sur toute les fonctions du fichier glew.c
Je pense que la sfml ne prend pas
mon fichier glew.c mais elle ne peut pas prendre celui de Mingw, alors elle possède le sien j'imagine.
Comment éviter ce conflit ?Je vais avoir besoin de définir ça avant le
glewInit() (que j'imagine donc être quelque part dans la SFML) :
glewExperimental = GL_TRUE;
Est-ce possible sans bidouiller-recompiler la SFML ?EDIT: désolé j'avais pas vu la section aide->général sur le forum