Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Framework] ODFAEG

Pour la création de jeux vidéos

    27 janvier 2020 à 18:13:06

    Bah je suis bloqué de toute façon, mingw ne trouve pas les fichiers includes de SFML, comment on fait pour compiler avec Cwc ?

    Pour créer une autre branche faut faire git checkout -b puis tu peux push dessus, j'ai fais un git checkout mais il ne semble pas afficher la nouvelles branches comment on en crée une depuis la page web ?

    -
    Edité par OmbreNoire 27 janvier 2020 à 18:29:33

    • Partager sur Facebook
    • Partager sur Twitter
      27 janvier 2020 à 19:13:39

      Je l'ai marqué dans le readme, dis moi si ça marche ;)

      Readme:

      Comment Compiler

      Installer Cwc

      Option 1

      -Installer TortoiseGit pour faire un "pull" des futurs updates.

      -Faire un clone de Cwc.

      Option 2

      -Prendre la dernière Release de Cwc


      -Lancer cwc.exe, lors de la première utilisation les fichiers .cwMake seront associés. Le menu "Config/Set cwc" permet la même chose.

      -Téléchager/Cloner ce repo (ODFAEG). Plusieurs compilation .cwMake s'y trouve (dans le dossier 'cwc'). Double cliquer sur celle voulu, les Toolchains et Libs seront téléchargé automatiquement, puis compilé.

      • Partager sur Facebook
      • Partager sur Twitter

      GZE, un moteur multiplateforme, adapté pour de la 2D, 3D et création de logiciels.

        27 janvier 2020 à 22:47:45

        Salut! Quand je clique sur le fichier Make_For_Windows[Debug].cwmake, il m'affiche ceci : Comment voulez vous ouvrir ce fichier ?

        Pourtant j'ai installé la dernière release de cwc mais on dirait qu'il ne me la trouve pas. :/ 

        Je ne vois pas de dossier cwc dans Programmes il l'installe ou le compilateur ?

        PS : ah bah on dirait qu'il faut ouvrir cwc avant pour que ça marche.

        Voilà ce qu'il m'affiche :

        > -{_sOpt}="Debug"
        | -{_sOpt}="Debug"
        > -#Run Build.cwc -{_wToolchain}= VLianceTool/LibRT
        > -{_wToolchain}= VLianceTool/LibRT
        | -{_wToolchain}= VLianceTool/LibRT
        > -{vFlag}= -std=c++14 -DSFML
        | -{vFlag}= -std=c++14 -DSFML
        > -{vIncl}= -I ../  -I ../ExtLib/SFML-2.5.1/include/ -I ../ExtLib/SDL2/include/ -I ../ODFAEG/extlibs/headers/libsndfile/windows/ -I ../ODFAEG/extlibs/headers/OPENSSL/ -I ../ODFAEG/include/ -I ../ODFAEG/extlibs/headers/ -I ../ODFAEG/extlibs/headers/libfreetype/windows/
        | -{vIncl}= -I ../  -I ../ExtLib/SFML-2.5.1/include/ -I ../ExtLib/SDL2/include/ -I ../ODFAEG/extlibs/headers/libsndfile/windows/ -I ../ODFAEG/extlibs/headers/OPENSSL/ -I ../ODFAEG/include/ -I ../ODFAEG/extlibs/headers/ -I ../ODFAEG/extlibs/headers/libfreetype/windows/
        > -c ../ODFAEG/src/ -o obj/cpp_{_sPlatform}_{_sOpt}/lib/ODFAEG/ -{vIncl} -{vFlag}
        | -c ../ODFAEG/src/ -o obj/cpp_{_sPlatform}_Debug/lib/ODFAEG/ -I ../  -I ../ExtLib/SFML-2.5.1/include/ -I ../ExtLib/SDL2/include/ -I ../ODFAEG/extlibs/headers/libsndfile/windows/ -I ../ODFAEG/extlibs/headers/OPENSSL/ -I ../ODFAEG/include/ -I ../ODFAEG/extlibs/headers/ -I ../ODFAEG/extlibs/headers/libfreetype/windows/ -std=c++14 -DSFML 
        Compiler not exist: VLianceTool/LibRT (Default)
        > -o obj/cpp_{_sPlatform}_{_sOpt}/ -#To _out/{_sPlatform}_{_sOpt}/App.*
        | -o obj/cpp_{_sPlatform}_Debug/ -#To _out/{_sPlatform}_Debug/App.*
        Compiler not exist: VLianceTool/LibRT (Default)
        Unknow Compiler
        > -#Run
        Executable not found: C:/Users/Laurent/Downloads/ODFAEG-master (1)/ODFAEG-master/cwc/_out/{_sPlatform}_Debug/App
         --- End ---  0.3 sec



        -
        Edité par OmbreNoire 27 janvier 2020 à 22:51:58

        • Partager sur Facebook
        • Partager sur Twitter
          27 janvier 2020 à 22:52:42

          Oui ya pas d'installateur pour l'instant, c'est encore en développent. Par contre pour la branche "Windows" je crois que c'est toi qui doit la créer de ton coté (j'ai pas les droits)

          En effet, c'est un bug, relance le .cwMake

          -
          Edité par Maeiky 27 janvier 2020 à 22:54:19

          • Partager sur Facebook
          • Partager sur Twitter

          GZE, un moteur multiplateforme, adapté pour de la 2D, 3D et création de logiciels.

            27 janvier 2020 à 22:55:17

            Ok mais j'ai une erreur Executable not found j'ai posté ce qu'il met dans le message ci-dessus, il télécharger SFML automatiquement, comme dépendant il y a aussi gmp, openssl et tout ça il va me les télécharger et les compiler automatiquement ?

            Ah bah en release j'y arrive j'ai la même erreur que toi.

            ../ODFAEG/src/odfaeg/Graphics/glResource.cpp: In constructor 'odfaeg::window::GLResource::GLResource()':
            ../ODFAEG/src/odfaeg/Graphics/glResource.cpp:5:13: error: 'ContextImpl' has not been declared
                         ContextImpl::initResource();
                         ^~~~~~~~~~~
            ../ODFAEG/src/odfaeg/Graphics/glResource.cpp: In destructor 'odfaeg::window::GLResource::~GLResource()':
            ../ODFAEG/src/odfaeg/Graphics/glResource.cpp:8:13: error: 'ContextImpl' has not been declared
                         ContextImpl::cleanupResource();
                         ^~~~~~~~~~~
            --Stop Build--


            Je ne comprend pas pourtant ça compile sans problème sous linux ha oui et aussi j'avais pas tout ces warnings.

            PS : Hé bien ce bout de code ne devrait pas compilé vu que j'utilise SFML et non plus le module fenêtre de ODFAEG. Il n'y a pas de classe ContextImpl pour windows normal que ça ne compile pas.

            -
            Edité par OmbreNoire 27 janvier 2020 à 23:14:01

            • Partager sur Facebook
            • Partager sur Twitter
              27 janvier 2020 à 23:06:41

              Ça pleut de warning, oui. :p
              Mais oui j'étais rendu là, le reste est entre tes mains, ya déjà une bonne partie qui compile là ;)

              Edit: Le debug devrait être bon aussi, ré-essaie voir

              -
              Edité par Maeiky 27 janvier 2020 à 23:12:51

              • Partager sur Facebook
              • Partager sur Twitter

              GZE, un moteur multiplateforme, adapté pour de la 2D, 3D et création de logiciels.

                27 janvier 2020 à 23:19:45

                Oui pour le Debug ça compile maintenant mais je ne comprends pas ce code là ou il y a une erreur ça ne devrait pas le compiler, je l'avais compilé y'a pas si longtemps avec mingw sous windows et ça avait été jusqu'au bout, mais on dirait qu'avec la nouvelle version de mingw il ne trouve pas les include sous windows 10.

                PS : Bon je vais essayer de corriger ça, je pense le mieux c'est de faire la gestion des fenêtres windows pour ODFAEG.

                -
                Edité par OmbreNoire 27 janvier 2020 à 23:21:09

                • Partager sur Facebook
                • Partager sur Twitter
                  27 janvier 2020 à 23:27:50

                  Je pense que ta changé beaucoup de chose depuis....

                  Et puis beaucoup de chose change entre le versions,par exemple j'avais plein d'erreur dans tes noms de variables car les même noms était utilisé par d'autre includes du compilo (vive le c++).

                  Aussi faut dire que je suis repartie du début, il se peut que ça compile des fichiers que tu ne compilais pas avant, voir le make file:

                  -{vFlag}=
                  -std=c++14
                  -DSFML
                  ;-DODFAEG_SYSTEM_WINDOWS
                  >
                  -{vIncl}=
                  -I ../ 
                  -I ../ExtLib/SFML-2.5.1/include/
                  -I ../ExtLib/SDL2/include/
                  -I ../ODFAEG/extlibs/headers/libsndfile/windows/
                  -I ../ODFAEG/extlibs/headers/OPENSSL/
                  -I ../ODFAEG/include/
                  -I ../ODFAEG/extlibs/headers/
                  -I ../ODFAEG/extlibs/headers/libfreetype/windows/
                  >
                  ;Build ODFAEG
                  -c ../ODFAEG/src/ -o obj/cpp_{_sPlatform}_{_sOpt}/lib/ODFAEG/
                  -{vIncl}
                  -{vFlag}
                  • Partager sur Facebook
                  • Partager sur Twitter

                  GZE, un moteur multiplateforme, adapté pour de la 2D, 3D et création de logiciels.

                    27 janvier 2020 à 23:36:07

                    Et tu l'as mit dans quel fichier le #define SFML ? Je ne le.vois pas dans config.hpp mais le compilateur me dit qu'il a été défini ailleurs.
                    • Partager sur Facebook
                    • Partager sur Twitter
                      27 janvier 2020 à 23:46:54

                      Dans "Build.cwc" (-DSFML)
                      -{vFlag}=
                      -std=c++14
                      -DSFML
                      ;-DODFAEG_SYSTEM_WINDOWS
                      Note: Le point virgule en début de ligne c'est pour mettre en commentaires


                      Ensuite il compile le dossier au complet: (-c ../ODFAEG/src/) et détecte les fichiers .cpp / .c

                      ;Build ODFAEG
                      -c ../ODFAEG/src/ -o obj/cpp_{_sPlatform}_{_sOpt}/lib/ODFAEG/
                      -{vIncl}
                      -{vFlag}

                      -
                      Edité par Maeiky 27 janvier 2020 à 23:53:47

                      • Partager sur Facebook
                      • Partager sur Twitter

                      GZE, un moteur multiplateforme, adapté pour de la 2D, 3D et création de logiciels.

                        28 janvier 2020 à 2:14:02

                        Et comment je fais si je ne veux pas qu'il compile certains fichiers parce que j'ai pas fini de les coder.

                        Même ceux que j'inclus nulle part cwc les compile hors que mingw pas.

                        • Partager sur Facebook
                        • Partager sur Twitter
                          28 janvier 2020 à 3:08:07

                          Il y a 2 façons:

                          #1 Exclure un dossier / fichier: (Ici le dossier Graphics)
                          ;Build ODFAEG
                          -c ../ODFAEG/src/ 
                            !../ODFAEG/src/odfaeg/Graphics/
                          -o obj/cpp_{_sPlatform}_{_sOpt}/lib/ODFAEG/
                          -{vIncl}
                          -{vFlag}
                          >
                          #2 Compiler que les dossiers/fichiers voulu:
                          ;Build ODFAEG Graphics
                          -c ../ODFAEG/src/odfaeg/Graphics/
                          -o obj/cpp_{_sPlatform}_{_sOpt}/lib/ODFAEG/Graphics/
                          -{vIncl}
                          -{vFlag}
                          >
                          
                          ;Build ODFAEG Physics
                          -c ../ODFAEG/src/odfaeg/Physics/
                          -o obj/cpp_{_sPlatform}_{_sOpt}/lib/ODFAEG/Physics/
                          -{vIncl}
                          -{vFlag}
                          >

                          -
                          Edité par Maeiky 28 janvier 2020 à 3:08:54

                          • Partager sur Facebook
                          • Partager sur Twitter

                          GZE, un moteur multiplateforme, adapté pour de la 2D, 3D et création de logiciels.

                            28 janvier 2020 à 17:11:12

                            Salut, j'ai commencé à amélioré le module fenêtre de ODFAEG pour qu'il supporte windows, ça a fait partir certaines erreurs mais je me retrouve bloqué ici :

                            In file included from C:/Users/Laurent/Downloads/ODFAEG-master (1)/ODFAEG-master/ODFAEG/include/odfaeg/Window/wglContext.hpp:6,
                                             from ../ODFAEG/src/odfaeg/Window/../../../include/odfaeg/Window/contextImpl.hpp:10,
                                             from ../ODFAEG/src/odfaeg/Window/context.cpp:2:
                            C:/Users/Laurent/Downloads/ODFAEG-master (1)/ODFAEG-master/ODFAEG/src/odfaeg/Window/wglExtensions.hpp:64:16: error: multiple types in one declaration
                             #define GLvoid void
                                            ^~~~
                            C:/Users/Laurent/Downloads/ODFAEG-master (1)/ODFAEG-master/ODFAEG/src/odfaeg/Window/wglExtensions.hpp:64:16: note: in definition of macro 'GLvoid'
                             #define GLvoid void
                                            ^~~~
                            C:/Users/Laurent/Downloads/ODFAEG-master (1)/ODFAEG-master/ODFAEG/src/odfaeg/Window/wglExtensions.hpp:64:16: error: declaration does not declare anything [-fpermissive]
                             #define GLvoid void
                                            ^~~~
                            C:/Users/Laurent/Downloads/ODFAEG-master (1)/ODFAEG-master/ODFAEG/src/odfaeg/Window/wglExtensions.hpp:64:16: note: in definition of macro 'GLvoid'
                             #define GLvoid void
                                            ^~~~
                            In file included from ../ODFAEG/src/odfaeg/Window/../../../include/odfaeg/Window/contextImpl.hpp:10,
                                             from ../ODFAEG/src/odfaeg/Window/context.cpp:2:
                            C:/Users/Laurent/Downloads/ODFAEG-master (1)/ODFAEG-master/ODFAEG/include/odfaeg/Window/wglContext.hpp: In member function 'virtual const odfaeg::window::ContextSettings& odfaeg::window::WglContext::getSettings() const':
                            C:/Users/Laurent/Downloads/ODFAEG-master (1)/ODFAEG-master/ODFAEG/include/odfaeg/Window/wglContext.hpp:86:13: warning: no return statement in function returning non-void [-Wreturn-type]
                                         }
                                         ^
                            --Stop Build--
                             --- End with 20 errors --- 2.96 sec

                            Dans ce fichier ci :

                            ////////////////////////////////////////////////////////////
                            //
                            // SFML - Simple and Fast Multimedia Library
                            // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
                            //
                            // This software is provided 'as-is', without any express or implied warranty.
                            // In no event will the authors be held liable for any damages arising from the use of this software.
                            //
                            // Permission is granted to anyone to use this software for any purpose,
                            // including commercial applications, and to alter it and redistribute it freely,
                            // subject to the following restrictions:
                            //
                            // 1. The origin of this software must not be misrepresented;
                            //    you must not claim that you wrote the original software.
                            //    If you use this software in a product, an acknowledgment
                            //    in the product documentation would be appreciated but is not required.
                            //
                            // 2. Altered source versions must be plainly marked as such,
                            //    and must not be misrepresented as being the original software.
                            //
                            // 3. This notice may not be removed or altered from any source distribution.
                            //
                            ////////////////////////////////////////////////////////////
                            
                            #ifndef SF_POINTER_C_GENERATED_HEADER_WINDOWSGL_HPP
                            #define SF_POINTER_C_GENERATED_HEADER_WINDOWSGL_HPP
                            
                            #ifdef __wglext_h_
                            #error Attempt to include auto-generated WGL header after wglext.h
                            #endif
                            
                            #define __wglext_h_
                            
                            #ifndef WIN32_LEAN_AND_MEAN
                                #define WIN32_LEAN_AND_MEAN 1
                            #endif
                            #ifndef NOMINMAX
                                #define NOMINMAX
                            #endif
                            #include <windows.h>
                            
                            #ifdef CODEGEN_FUNCPTR
                            #undef CODEGEN_FUNCPTR
                            #endif // CODEGEN_FUNCPTR
                            #define CODEGEN_FUNCPTR WINAPI
                            
                            #ifndef GL_LOAD_GEN_BASIC_OPENGL_TYPEDEFS
                            #define GL_LOAD_GEN_BASIC_OPENGL_TYPEDEFS
                            
                            typedef unsigned int GLenum;
                            typedef unsigned char GLboolean;
                            typedef unsigned int GLbitfield;
                            typedef signed char GLbyte;
                            typedef short GLshort;
                            typedef int GLint;
                            typedef int GLsizei;
                            typedef unsigned char GLubyte;
                            typedef unsigned short GLushort;
                            typedef unsigned int GLuint;
                            typedef float GLfloat;
                            typedef float GLclampf;
                            typedef double GLdouble;
                            typedef double GLclampd;
                            #define GLvoid void
                            
                            #endif // GL_LOAD_GEN_BASIC_OPENGL_TYPEDEFS
                            
                            
                            #ifndef GL_LOAD_GEN_BASIC_OPENGL_TYPEDEFS
                            #define GL_LOAD_GEN_BASIC_OPENGL_TYPEDEFS
                            
                            
                            #endif // GL_LOAD_GEN_BASIC_OPENGL_TYPEDEFS
                            
                            
                            struct _GPU_DEVICE {
                                DWORD  cb;
                                CHAR   DeviceName[32];
                                CHAR   DeviceString[128];
                                DWORD  Flags;
                                RECT   rcVirtualScreen;
                            };
                            DECLARE_HANDLE(HPBUFFERARB);
                            DECLARE_HANDLE(HPBUFFEREXT);
                            DECLARE_HANDLE(HVIDEOOUTPUTDEVICENV);
                            DECLARE_HANDLE(HPVIDEODEV);
                            DECLARE_HANDLE(HGPUNV);
                            DECLARE_HANDLE(HVIDEOINPUTDEVICENV);
                            typedef struct _GPU_DEVICE *PGPU_DEVICE;
                            
                            #ifdef __cplusplus
                            extern "C" {
                            #endif // __cplusplus
                            
                            extern int sfwgl_ext_EXT_swap_control;
                            extern int sfwgl_ext_EXT_framebuffer_sRGB;
                            extern int sfwgl_ext_ARB_framebuffer_sRGB;
                            extern int sfwgl_ext_ARB_multisample;
                            extern int sfwgl_ext_ARB_pixel_format;
                            extern int sfwgl_ext_ARB_pbuffer;
                            extern int sfwgl_ext_ARB_create_context;
                            extern int sfwgl_ext_ARB_create_context_profile;
                            
                            #define WGL_FRAMEBUFFER_SRGB_CAPABLE_EXT 0x20A9
                            
                            #define WGL_FRAMEBUFFER_SRGB_CAPABLE_ARB 0x20A9
                            
                            #define WGL_SAMPLES_ARB 0x2042
                            #define WGL_SAMPLE_BUFFERS_ARB 0x2041
                            
                            #define WGL_ACCELERATION_ARB 0x2003
                            #define WGL_ACCUM_ALPHA_BITS_ARB 0x2021
                            #define WGL_ACCUM_BITS_ARB 0x201D
                            #define WGL_ACCUM_BLUE_BITS_ARB 0x2020
                            #define WGL_ACCUM_GREEN_BITS_ARB 0x201F
                            #define WGL_ACCUM_RED_BITS_ARB 0x201E
                            #define WGL_ALPHA_BITS_ARB 0x201B
                            #define WGL_ALPHA_SHIFT_ARB 0x201C
                            #define WGL_AUX_BUFFERS_ARB 0x2024
                            #define WGL_BLUE_BITS_ARB 0x2019
                            #define WGL_BLUE_SHIFT_ARB 0x201A
                            #define WGL_COLOR_BITS_ARB 0x2014
                            #define WGL_DEPTH_BITS_ARB 0x2022
                            #define WGL_DOUBLE_BUFFER_ARB 0x2011
                            #define WGL_DRAW_TO_BITMAP_ARB 0x2002
                            #define WGL_DRAW_TO_WINDOW_ARB 0x2001
                            #define WGL_FULL_ACCELERATION_ARB 0x2027
                            #define WGL_GENERIC_ACCELERATION_ARB 0x2026
                            #define WGL_GREEN_BITS_ARB 0x2017
                            #define WGL_GREEN_SHIFT_ARB 0x2018
                            #define WGL_NEED_PALETTE_ARB 0x2004
                            #define WGL_NEED_SYSTEM_PALETTE_ARB 0x2005
                            #define WGL_NO_ACCELERATION_ARB 0x2025
                            #define WGL_NUMBER_OVERLAYS_ARB 0x2008
                            #define WGL_NUMBER_PIXEL_FORMATS_ARB 0x2000
                            #define WGL_NUMBER_UNDERLAYS_ARB 0x2009
                            #define WGL_PIXEL_TYPE_ARB 0x2013
                            #define WGL_RED_BITS_ARB 0x2015
                            #define WGL_RED_SHIFT_ARB 0x2017
                            #define WGL_SHARE_ACCUM_ARB 0x200E
                            #define WGL_SHARE_DEPTH_ARB 0x200C
                            #define WGL_SHARE_STENCIL_ARB 0x200D
                            #define WGL_STENCIL_BITS_ARB 0x2023
                            #define WGL_STEREO_ARB 0x2012
                            #define WGL_SUPPORT_GDI_ARB 0x200F
                            #define WGL_SUPPORT_OPENGL_ARB 0x2010
                            #define WGL_SWAP_COPY_ARB 0x2029
                            #define WGL_SWAP_EXCHANGE_ARB 0x2028
                            #define WGL_SWAP_LAYER_BUFFERS_ARB 0x2006
                            #define WGL_SWAP_METHOD_ARB 0x2007
                            #define WGL_SWAP_UNDEFINED_ARB 0x202A
                            #define WGL_TRANSPARENT_ALPHA_VALUE_ARB 0x203A
                            #define WGL_TRANSPARENT_ARB 0x200A
                            #define WGL_TRANSPARENT_BLUE_VALUE_ARB 0x2039
                            #define WGL_TRANSPARENT_GREEN_VALUE_ARB 0x2038
                            #define WGL_TRANSPARENT_INDEX_VALUE_ARB 0x203B
                            #define WGL_TRANSPARENT_RED_VALUE_ARB 0x2037
                            #define WGL_TYPE_COLORINDEX_ARB 0x202C
                            #define WGL_TYPE_RGBA_ARB 0x202B
                            
                            #define WGL_DRAW_TO_PBUFFER_ARB 0x202D
                            #define WGL_MAX_PBUFFER_HEIGHT_ARB 0x2030
                            #define WGL_MAX_PBUFFER_PIXELS_ARB 0x202E
                            #define WGL_MAX_PBUFFER_WIDTH_ARB 0x202F
                            #define WGL_PBUFFER_HEIGHT_ARB 0x2035
                            #define WGL_PBUFFER_LARGEST_ARB 0x2033
                            #define WGL_PBUFFER_LOST_ARB 0x2036
                            #define WGL_PBUFFER_WIDTH_ARB 0x2034
                            
                            #define WGL_CONTEXT_DEBUG_BIT_ARB 0x00000001
                            #define WGL_CONTEXT_FLAGS_ARB 0x2094
                            #define WGL_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB 0x00000002
                            #define WGL_CONTEXT_LAYER_PLANE_ARB 0x2093
                            #define WGL_CONTEXT_MAJOR_VERSION_ARB 0x2091
                            #define WGL_CONTEXT_MINOR_VERSION_ARB 0x2092
                            #define WGL_ERROR_INVALID_VERSION_ARB 0x2095
                            
                            #define WGL_CONTEXT_COMPATIBILITY_PROFILE_BIT_ARB 0x00000002
                            #define WGL_CONTEXT_CORE_PROFILE_BIT_ARB 0x00000001
                            #define WGL_CONTEXT_PROFILE_MASK_ARB 0x9126
                            #define WGL_ERROR_INVALID_PROFILE_ARB 0x2096
                            
                            #ifndef WGL_EXT_swap_control
                            #define WGL_EXT_swap_control 1
                            extern int (CODEGEN_FUNCPTR *sf_ptrc_wglGetSwapIntervalEXT)(void);
                            #define wglGetSwapIntervalEXT sf_ptrc_wglGetSwapIntervalEXT
                            extern BOOL (CODEGEN_FUNCPTR *sf_ptrc_wglSwapIntervalEXT)(int);
                            #define wglSwapIntervalEXT sf_ptrc_wglSwapIntervalEXT
                            #endif // WGL_EXT_swap_control
                            
                            
                            #ifndef WGL_ARB_pixel_format
                            #define WGL_ARB_pixel_format 1
                            extern BOOL (CODEGEN_FUNCPTR *sf_ptrc_wglChoosePixelFormatARB)(HDC, const int*, const FLOAT*, UINT, int*, UINT*);
                            #define wglChoosePixelFormatARB sf_ptrc_wglChoosePixelFormatARB
                            extern BOOL (CODEGEN_FUNCPTR *sf_ptrc_wglGetPixelFormatAttribfvARB)(HDC, int, int, UINT, const int*, FLOAT*);
                            #define wglGetPixelFormatAttribfvARB sf_ptrc_wglGetPixelFormatAttribfvARB
                            extern BOOL (CODEGEN_FUNCPTR *sf_ptrc_wglGetPixelFormatAttribivARB)(HDC, int, int, UINT, const int*, int*);
                            #define wglGetPixelFormatAttribivARB sf_ptrc_wglGetPixelFormatAttribivARB
                            #endif // WGL_ARB_pixel_format
                            
                            #ifndef WGL_ARB_pbuffer
                            #define WGL_ARB_pbuffer 1
                            extern HPBUFFERARB (CODEGEN_FUNCPTR *sf_ptrc_wglCreatePbufferARB)(HDC, int, int, int, const int*);
                            #define wglCreatePbufferARB sf_ptrc_wglCreatePbufferARB
                            extern BOOL (CODEGEN_FUNCPTR *sf_ptrc_wglDestroyPbufferARB)(HPBUFFERARB);
                            #define wglDestroyPbufferARB sf_ptrc_wglDestroyPbufferARB
                            extern HDC (CODEGEN_FUNCPTR *sf_ptrc_wglGetPbufferDCARB)(HPBUFFERARB);
                            #define wglGetPbufferDCARB sf_ptrc_wglGetPbufferDCARB
                            extern BOOL (CODEGEN_FUNCPTR *sf_ptrc_wglQueryPbufferARB)(HPBUFFERARB, int, int*);
                            #define wglQueryPbufferARB sf_ptrc_wglQueryPbufferARB
                            extern int (CODEGEN_FUNCPTR *sf_ptrc_wglReleasePbufferDCARB)(HPBUFFERARB, HDC);
                            #define wglReleasePbufferDCARB sf_ptrc_wglReleasePbufferDCARB
                            #endif // WGL_ARB_pbuffer
                            
                            #ifndef WGL_ARB_create_context
                            #define WGL_ARB_create_context 1
                            extern HGLRC (CODEGEN_FUNCPTR *sf_ptrc_wglCreateContextAttribsARB)(HDC, HGLRC, const int*);
                            #define wglCreateContextAttribsARB sf_ptrc_wglCreateContextAttribsARB
                            #endif // WGL_ARB_create_context
                            
                            
                            enum sfwgl_LoadStatus
                            {
                                sfwgl_LOAD_FAILED = 0,
                                sfwgl_LOAD_SUCCEEDED = 1
                            };
                            
                            int sfwgl_LoadFunctions(HDC hdc);
                            
                            
                            #ifdef __cplusplus
                            }
                            #endif // __cplusplus
                            
                            #endif // SF_POINTER_C_GENERATED_HEADER_WINDOWSGL_HPP
                            

                            Pourtant se fichier compile avec SFML, sous mingw.


                            -
                            Edité par OmbreNoire 28 janvier 2020 à 17:15:14

                            • Partager sur Facebook
                            • Partager sur Twitter
                              28 janvier 2020 à 17:29:29

                              Dans gl.h:

                              typedef void		GLvoid;

                              C'est incompatible avec:
                               #define GLvoid void
                              • Partager sur Facebook
                              • Partager sur Twitter

                              GZE, un moteur multiplateforme, adapté pour de la 2D, 3D et création de logiciels.

                                28 janvier 2020 à 18:02:39

                                Ok j'ai corrigé à peu près toutes les erreurs sauf qu'il me compile aussi les fichiers de linux même si je ne les inclus pas, chose qu'il ne fait pas avec cmake!

                                Ca va être embêtant d'à chaque fois refaire le build, chaque fois que je change de plateforme.

                                : (g++<C++>)  -I ../ -I ../ExtLib/SFML-2.5.1/include/ -I ../ExtLib/SDL2/include/ -I ../ODFAEG/extlibs/headers/libsndfile/windows/ -I ../ODFAEG/extlibs/headers/OPENSSL/ -I ../ODFAEG/include/ -I ../ODFAEG/extlibs/headers/ -I ../ODFAEG/extlibs/headers/libfreetype/windows/ -std=c++14 -DSFML -c ../ODFAEG/src/odfaeg/Window/display.cpp -o obj/cpp_Windows_O2/lib/ODFAEG/odfaeg/Window/display.o -O2 -s -ffunction-sections -fdata-sections -Wl,--gc-sections -I"C:/Users/Laurent/Downloads/Cwc-0.0.95.7/Cwc-0.0.95.7/Toolchain/VLianceTool/LibRT/LibRT-8.0.3/include/" -I"C:/Users/Laurent/Downloads/Cwc-0.0.95.7/Cwc-0.0.95.7/Toolchain/VLianceTool/LibRT/LibRT-8.0.3/i686-w64-mingw32/include/" -I"C:/Users/Laurent/Downloads/Cwc-0.0.95.7/Cwc-0.0.95.7/Toolchain/VLianceTool/LibRT/LibRT-8.0.3/i686-w64-mingw32/include/c++/" -I"C:/Users/Laurent/Downloads/Cwc-0.0.95.7/Cwc-0.0.95.7/Toolchain/VLianceTool/LibRT/LibRT-8.0.3/i686-w64-mingw32/include/c++/backward/" -I"C:/Users/Laurent/Downloads/Cwc-0.0.95.7/Cwc-0.0.95.7/Toolchain/VLianceTool/LibRT/LibRT-8.0.3/pthreads/" -I"C:/Users/Laurent/Downloads/ODFAEG-master (1)/ODFAEG-master/cwc/" -m32 -MD -DDsToolchain="VLianceTool_LibRT" -DDsPlatform="Windows" -DD_Platform_Windows -DDsPlatform_File="Default" -DD_Release -DDsOpt="O2"
                                In file included from ../ODFAEG/src/odfaeg/Window/display.cpp:1:
                                ../ODFAEG/src/odfaeg/Window/../../../include/odfaeg/Window/display.hpp:3:10: fatal error: X11/Xlib.h: No such file or directory
                                 #include <X11/Xlib.h>
                                          ^~~~~~~~~~~~
                                compilation terminated.
                                --Stop Build--
                                 --- End with 9 errors --- 2.25 sec

                                Il n'y a pas de fichier xLib sous windows!

                                Il n'y a pas un moyen de spécifier les fichiers que l'on veut compiler suivant la plateforme sur laquelle on est ?

                                PS : j'ai essayé de le pull sur un nouveau repository car plus moyen d'accéder à l'ancien, il y a le compte Ornito avec lequel je n'ai pas le droit de push et avec mon autre compte celui avec lequel j'ai tout les droits il m'envoie un code de vérification à une adresse email qui n'existe plus.

                                Mais j'ai ce message d'erreur avec tortoisegit :

                                git.exe push --progress "origin" windows
                                remote: Permission to LaurentDuroisin7601/ODFAEG.git denied to Ornito.
                                fatal: unable to access 'https://github.com/LaurentDuroisin7601/ODFAEG/': The requested URL returned error: 403
                                
                                
                                git did not exit cleanly (exit code 128) (1250 ms @ 28-01-20 18:27:26)
                                


                                PS 2, j'ai cette erreur lorsque j'essaye d'ouvrir le fichier build :

                                Exception on WM_CREATE

                                scintillaEditView::init  Scintilla error cannot load the dynamic library.

                                -
                                Edité par OmbreNoire 28 janvier 2020 à 18:35:00

                                • Partager sur Facebook
                                • Partager sur Twitter
                                  28 janvier 2020 à 18:35:12

                                  Normalement on fait un dossier par plateforme, ensuite tu fais par exemple:

                                  ;Build ODFAEG Windows relative cpp files
                                  -c ../ODFAEG/src/odfaeg/{_sPlatform}/
                                  -o obj/cpp_{_sPlatform}_{_sOpt}/lib/ODFAEG/{_sPlatform}/
                                  -{vIncl}
                                  -{vFlag}
                                  >

                                  _sPlatform étant build-in

                                  Mais rien t’empêche de faire comme CMake et builder tes fichiers, un par un. C'est juste pas très maintenable.

                                  Ou bien d'exclure les fichiers comme mentionné plus haut.

                                  PS: Oui ya un bug quand on ouvre plus d'une instance de Notepad++

                                  -
                                  Edité par Maeiky 28 janvier 2020 à 18:37:39

                                  • Partager sur Facebook
                                  • Partager sur Twitter

                                  GZE, un moteur multiplateforme, adapté pour de la 2D, 3D et création de logiciels.

                                    28 janvier 2020 à 18:36:31

                                    j'ai cette erreur lorsque j'essaye d'ouvrir le fichier build :

                                    Exception on WM_CREATE

                                    scintillaEditView::init  Scintilla error cannot load the dynamic library.

                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      28 janvier 2020 à 20:35:55

                                      Le fichier s'ouvre dans n'importe quel éditeur texte. Mais avec notepad++ tu dois fermer les autres instances avant.
                                      • Partager sur Facebook
                                      • Partager sur Twitter

                                      GZE, un moteur multiplateforme, adapté pour de la 2D, 3D et création de logiciels.

                                        28 janvier 2020 à 20:43:35

                                        Quand j'essaie de l'ouvrir avec notpad ça me met cette erreur pourtant il n'y a aucune autre instance d'ouverte.

                                        Bon j'ai mit les fichiers windows dans un dossier, les fichiers linux dans un autre dossier.

                                        Par contre j'ai des erreurs de compilation. (pourtant je n'ai fais que de reprendre la même classe que SFML)

                                                     }
                                                     ^
                                        ../ODFAEG/src/odfaeg/Window/Windows/win32Window.cpp: In function 'void {anonymous}::setProcessDpiAware()':
                                        ../ODFAEG/src/odfaeg/Window/Windows/win32Window.cpp:47:43: error: cannot convert 'const wchar_t*' to 'LPCSTR' {aka 'const char*'}
                                                 HINSTANCE shCoreDll = LoadLibrary(L"Shcore.dll");
                                                                                   ^~~~~~~~~~~~~
                                        In file included from C:/Users/Laurent/Downloads/Cwc-0.0.95.7/Cwc-0.0.95.7/Toolchain/VLianceTool/LibRT/LibRT-8.0.3/i686-w64-mingw32/include/windows.h:70,
                                                         from ../ODFAEG/extlibs/headers/GL/gl.h:91,
                                                         from ../ODFAEG/src/odfaeg/Window/Windows/win32Window.cpp:11:
                                        C:/Users/Laurent/Downloads/Cwc-0.0.95.7/Cwc-0.0.95.7/Toolchain/VLianceTool/LibRT/LibRT-8.0.3/i686-w64-mingw32/include/winbase.h:1517:50: note:   initializing argument 1 of 'HINSTANCE__* LoadLibraryA(LPCSTR)'
                                           WINBASEAPI HMODULE WINAPI LoadLibraryA (LPCSTR lpLibFileName);
                                                                                   ~~~~~~~^~~~~~~~~~~~~
                                        ../ODFAEG/src/odfaeg/Window/Windows/win32Window.cpp:82:43: error: cannot convert 'const wchar_t*' to 'LPCSTR' {aka 'const char*'}
                                                 HINSTANCE user32Dll = LoadLibrary(L"user32.dll");
                                                                                   ^~~~~~~~~~~~~
                                        In file included from C:/Users/Laurent/Downloads/Cwc-0.0.95.7/Cwc-0.0.95.7/Toolchain/VLianceTool/LibRT/LibRT-8.0.3/i686-w64-mingw32/include/windows.h:70,
                                                         from ../ODFAEG/extlibs/headers/GL/gl.h:91,
                                                         from ../ODFAEG/src/odfaeg/Window/Windows/win32Window.cpp:11:
                                        C:/Users/Laurent/Downloads/Cwc-0.0.95.7/Cwc-0.0.95.7/Toolchain/VLianceTool/LibRT/LibRT-8.0.3/i686-w64-mingw32/include/winbase.h:1517:50: note:   initializing argument 1 of 'HINSTANCE__* LoadLibraryA(LPCSTR)'
                                           WINBASEAPI HMODULE WINAPI LoadLibraryA (LPCSTR lpLibFileName);
                                                                                   ~~~~~~~^~~~~~~~~~~~~
                                        ../ODFAEG/src/odfaeg/Window/Windows/win32Window.cpp: In member function 'void odfaeg::window::Win32Window::switchToFullscreen(const sf::VideoMode&)':
                                        ../ODFAEG/src/odfaeg/Window/Windows/win32Window.cpp:537:40: error: cannot convert 'DEVMODE*' {aka '_devicemodeA*'} to 'LPDEVMODEW' {aka '_devicemodeW*'}
                                                     if (ChangeDisplaySettingsW(&devMode, CDS_FULLSCREEN) != DISP_CHANGE_SUCCESSFUL)
                                                                                ^~~~~~~~
                                        In file included from C:/Users/Laurent/Downloads/Cwc-0.0.95.7/Cwc-0.0.95.7/Toolchain/VLianceTool/LibRT/LibRT-8.0.3/i686-w64-mingw32/include/windows.h:72,
                                                         from ../ODFAEG/extlibs/headers/GL/gl.h:91,
                                                         from ../ODFAEG/src/odfaeg/Window/Windows/win32Window.cpp:11:
                                        C:/Users/Laurent/Downloads/Cwc-0.0.95.7/Cwc-0.0.95.7/Toolchain/VLianceTool/LibRT/LibRT-8.0.3/i686-w64-mingw32/include/winuser.h:5372:60: note:   initializing argument 1 of 'LONG ChangeDisplaySettingsW(LPDEVMODEW, DWORD)'
                                           WINUSERAPI LONG WINAPI ChangeDisplaySettingsW(LPDEVMODEW lpDevMode,DWORD dwFlags);
                                                                                         ~~~~~~~~~~~^~~~~~~~~
                                        --Stop Build--
                                         --- End with 7 errors --- 2.67 sec

                                        Voici le fichier :

                                        #ifdef _WIN32_WINDOWS
                                            #undef _WIN32_WINDOWS
                                        #endif
                                        #ifdef _WIN32_WINNT
                                            #undef _WIN32_WINNT
                                        #endif
                                        #define _WIN32_WINDOWS 0x0501
                                        #define _WIN32_WINNT   0x0501
                                        #define WINVER         0x0501
                                        #include <SFML/Window/WindowStyle.hpp>
                                        #include <GL/gl.h>
                                        #include <SFML/System/Err.hpp>
                                        #include <SFML/System/Utf.hpp>
                                        // dbt.h is lowercase here, as a cross-compile on linux with mingw-w64
                                        // expects lowercase, and a native compile on windows, whether via msvc
                                        // or mingw-w64 addresses files in a case insensitive manner.
                                        #include <dbt.h>
                                        #include <vector>
                                        #include <cstring>
                                        
                                        // MinGW lacks the definition of some Win32 constants
                                        #ifndef XBUTTON1
                                            #define XBUTTON1 0x0001
                                        #endif
                                        #ifndef XBUTTON2
                                            #define XBUTTON2 0x0002
                                        #endif
                                        #ifndef WM_MOUSEHWHEEL
                                            #define WM_MOUSEHWHEEL 0x020E
                                        #endif
                                        #ifndef MAPVK_VK_TO_VSC
                                            #define MAPVK_VK_TO_VSC (0)
                                        #endif
                                        #include "../../../../include/odfaeg/Window/Windows/win32Window.hpp"
                                        namespace
                                        {
                                            unsigned int               windowCount      = 0; // Windows owned by SFML
                                            unsigned int               handleCount      = 0; // All window handles
                                            const wchar_t*             className        = L"ODFAEG_Window";
                                            odfaeg::window::Win32Window* fullscreenWindow = NULL;
                                        
                                            const GUID GUID_DEVINTERFACE_HID = {0x4d1e55b2, 0xf16f, 0x11cf, {0x88, 0xcb, 0x00, 0x11, 0x11, 0x00, 0x00, 0x30}};
                                        
                                            void setProcessDpiAware()
                                            {
                                                // Try SetProcessDpiAwareness first
                                                HINSTANCE shCoreDll = LoadLibrary(L"Shcore.dll");
                                        
                                                if (shCoreDll)
                                                {
                                                    enum ProcessDpiAwareness
                                                    {
                                                        ProcessDpiUnaware         = 0,
                                                        ProcessSystemDpiAware     = 1,
                                                        ProcessPerMonitorDpiAware = 2
                                                    };
                                        
                                                    typedef HRESULT (WINAPI* SetProcessDpiAwarenessFuncType)(ProcessDpiAwareness);
                                                    SetProcessDpiAwarenessFuncType SetProcessDpiAwarenessFunc = reinterpret_cast<SetProcessDpiAwarenessFuncType>(GetProcAddress(shCoreDll, "SetProcessDpiAwareness"));
                                        
                                                    if (SetProcessDpiAwarenessFunc)
                                                    {
                                                        // We only check for E_INVALIDARG because we would get
                                                        // E_ACCESSDENIED if the DPI was already set previously
                                                        // and S_OK means the call was successful
                                                        if (SetProcessDpiAwarenessFunc(ProcessSystemDpiAware) == E_INVALIDARG)
                                                        {
                                                            sf::err() << "Failed to set process DPI awareness" << std::endl;
                                                        }
                                                        else
                                                        {
                                                            FreeLibrary(shCoreDll);
                                                            return;
                                                        }
                                                    }
                                        
                                                    FreeLibrary(shCoreDll);
                                                }
                                        
                                                // Fall back to SetProcessDPIAware if SetProcessDpiAwareness
                                                // is not available on this system
                                                HINSTANCE user32Dll = LoadLibrary(L"user32.dll");
                                        
                                                if (user32Dll)
                                                {
                                                    typedef BOOL (WINAPI* SetProcessDPIAwareFuncType)(void);
                                                    SetProcessDPIAwareFuncType SetProcessDPIAwareFunc = reinterpret_cast<SetProcessDPIAwareFuncType>(GetProcAddress(user32Dll, "SetProcessDPIAware"));
                                        
                                                    if (SetProcessDPIAwareFunc)
                                                    {
                                                        if (!SetProcessDPIAwareFunc())
                                                            sf::err() << "Failed to set process DPI awareness" << std::endl;
                                                    }
                                        
                                                    FreeLibrary(user32Dll);
                                                }
                                            }
                                        }
                                        namespace odfaeg {
                                            namespace window {
                                                using namespace sf;
                                                Win32Window::Win32Window() :
                                                m_handle          (NULL),
                                                m_callback        (0),
                                                m_cursorVisible   (true), // might need to call GetCursorInfo
                                                m_lastCursor      (LoadCursor(NULL, IDC_ARROW)),
                                                m_icon            (NULL),
                                                m_keyRepeatEnabled(true),
                                                m_lastSize        (0, 0),
                                                m_resizing        (false),
                                                m_surrogate       (0),
                                                m_mouseInside     (false),
                                                m_fullscreen      (false),
                                                m_cursorGrabbed   (false),
                                                m_opened(false),
                                                m_destroyed(true) {
                                        
                                                }
                                                ////////////////////////////////////////////////////////////
                                                Win32Window::Win32Window(WindowHandle handle, const ContextSettings& settings) :
                                                m_handle          (handle),
                                                m_callback        (0),
                                                m_cursorVisible   (true), // might need to call GetCursorInfo
                                                m_lastCursor      (LoadCursor(NULL, IDC_ARROW)),
                                                m_icon            (NULL),
                                                m_keyRepeatEnabled(true),
                                                m_lastSize        (0, 0),
                                                m_resizing        (false),
                                                m_surrogate       (0),
                                                m_mouseInside     (false),
                                                m_fullscreen      (false),
                                                m_cursorGrabbed   (false),
                                                m_opened(false),
                                                m_destroyed(true)
                                                {
                                                    create(m_handle, settings);
                                                }
                                        
                                        
                                                ////////////////////////////////////////////////////////////
                                                Win32Window::Win32Window(VideoMode mode, const String& title, Uint32 style, const ContextSettings& settings) :
                                                m_handle          (NULL),
                                                m_callback        (0),
                                                m_cursorVisible   (true), // might need to call GetCursorInfo
                                                m_lastCursor      (LoadCursor(NULL, IDC_ARROW)),
                                                m_icon            (NULL),
                                                m_keyRepeatEnabled(true),
                                                m_lastSize        (mode.width, mode.height),
                                                m_resizing        (false),
                                                m_surrogate       (0),
                                                m_mouseInside     (false),
                                                m_fullscreen      ((style & Style::Fullscreen) != 0),
                                                m_cursorGrabbed   (m_fullscreen),
                                                m_opened(false),
                                                m_destroyed(true)
                                                {
                                                    create(mode, title, style, settings);
                                                }
                                                void Win32Window::create(sf::WindowHandle handle, const ContextSettings& settings) {
                                                    // Set that this process is DPI aware and can handle DPI scaling
                                                    setProcessDpiAware();
                                        
                                                    if (m_handle)
                                                    {
                                                        // If we're the first window handle, we only need to poll for joysticks when WM_DEVICECHANGE message is received
                                                        /*if (handleCount == 0)
                                                            JoystickImpl::setLazyUpdates(true);*/
                                        
                                                        ++handleCount;
                                        
                                                        // We change the event procedure of the control (it is important to save the old one)
                                                        SetWindowLongPtrW(m_handle, GWLP_USERDATA, reinterpret_cast<LONG_PTR>(this));
                                                        m_callback = SetWindowLongPtrW(m_handle, GWLP_WNDPROC, reinterpret_cast<LONG_PTR>(&Win32Window::globalOnEvent));
                                                    }
                                                    m_opened = true;
                                                    m_destroyed = false;
                                                }
                                                void Win32Window::create (VideoMode mode, const String& title, Uint32 style, const ContextSettings& settings) {
                                                    // Set that this process is DPI aware and can handle DPI scaling
                                                    setProcessDpiAware();
                                        
                                                    // Register the window class at first call
                                                    if (windowCount == 0)
                                                        registerWindowClass();
                                        
                                                    // Compute position and size
                                                    HDC screenDC = GetDC(NULL);
                                                    int left   = (GetDeviceCaps(screenDC, HORZRES) - static_cast<int>(mode.width))  / 2;
                                                    int top    = (GetDeviceCaps(screenDC, VERTRES) - static_cast<int>(mode.height)) / 2;
                                                    int width  = mode.width;
                                                    int height = mode.height;
                                                    ReleaseDC(NULL, screenDC);
                                        
                                                    // Choose the window style according to the Style parameter
                                                    DWORD win32Style = WS_VISIBLE;
                                                    if (style == Style::None)
                                                    {
                                                        win32Style |= WS_POPUP;
                                                    }
                                                    else
                                                    {
                                                        if (style & Style::Titlebar) win32Style |= WS_CAPTION | WS_MINIMIZEBOX;
                                                        if (style & Style::Resize)   win32Style |= WS_THICKFRAME | WS_MAXIMIZEBOX;
                                                        if (style & Style::Close)    win32Style |= WS_SYSMENU;
                                                    }
                                        
                                                    // In windowed mode, adjust width and height so that window will have the requested client area
                                                    if (!m_fullscreen)
                                                    {
                                                        RECT rectangle = {0, 0, width, height};
                                                        AdjustWindowRect(&rectangle, win32Style, false);
                                                        width  = rectangle.right - rectangle.left;
                                                        height = rectangle.bottom - rectangle.top;
                                                    }
                                        
                                                    // Create the window
                                                    m_handle = CreateWindowW(className, title.toWideString().c_str(), win32Style, left, top, width, height, NULL, NULL, GetModuleHandle(NULL), this);
                                        
                                                    // Register to receive device interface change notifications (used for joystick connection handling)
                                                    DEV_BROADCAST_DEVICEINTERFACE deviceInterface = {sizeof(DEV_BROADCAST_DEVICEINTERFACE), DBT_DEVTYP_DEVICEINTERFACE, 0, GUID_DEVINTERFACE_HID, 0};
                                                    RegisterDeviceNotification(m_handle, &deviceInterface, DEVICE_NOTIFY_WINDOW_HANDLE);
                                        
                                                    // If we're the first window handle, we only need to poll for joysticks when WM_DEVICECHANGE message is received
                                                    if (m_handle)
                                                    {
                                                        /*if (handleCount == 0)
                                                            JoystickImpl::setLazyUpdates(true);*/
                                        
                                                        ++handleCount;
                                                    }
                                        
                                                    // By default, the OS limits the size of the window the the desktop size,
                                                    // we have to resize it after creation to apply the real size
                                                    setSize(Vector2u(mode.width, mode.height));
                                        
                                                    // Switch to fullscreen if requested
                                                    if (m_fullscreen)
                                                        switchToFullscreen(mode);
                                        
                                                    // Increment window count
                                                    windowCount++;
                                                    m_opened = true;
                                                    m_destroyed = false;
                                                }
                                                void Win32Window::destroy() {
                                                    // TODO should we restore the cursor shape and visibility?
                                        
                                                    // Destroy the custom icon, if any
                                                    if (m_icon)
                                                        DestroyIcon(m_icon);
                                        
                                                    // If it's the last window handle we have to poll for joysticks again
                                                    if (m_handle)
                                                    {
                                                        --handleCount;
                                        
                                                        /*if (handleCount == 0)
                                                            JoystickImpl::setLazyUpdates(false);*/
                                                    }
                                        
                                                    if (!m_callback)
                                                    {
                                                        // Destroy the window
                                                        if (m_handle)
                                                            DestroyWindow(m_handle);
                                        
                                                        // Decrement the window count
                                                        windowCount--;
                                        
                                                        // Unregister window class if we were the last window
                                                        if (windowCount == 0)
                                                            UnregisterClassW(className, GetModuleHandleW(NULL));
                                                    }
                                                    else
                                                    {
                                                        // The window is external: remove the hook on its message callback
                                                        SetWindowLongPtrW(m_handle, GWLP_WNDPROC, m_callback);
                                                    }
                                                    m_destroyed = true;
                                                    m_opened = false;
                                                }
                                        
                                                ////////////////////////////////////////////////////////////
                                                Win32Window::~Win32Window()
                                                {
                                                    // TODO should we restore the cursor shape and visibility?
                                        
                                                    // Destroy the custom icon, if any
                                                    if (m_icon)
                                                        DestroyIcon(m_icon);
                                        
                                                    // If it's the last window handle we have to poll for joysticks again
                                                    if (m_handle)
                                                    {
                                                        --handleCount;
                                        
                                                        /*if (handleCount == 0)
                                                            JoystickImpl::setLazyUpdates(false);*/
                                                    }
                                        
                                                    if (!m_callback)
                                                    {
                                                        // Destroy the window
                                                        if (m_handle)
                                                            DestroyWindow(m_handle);
                                        
                                                        // Decrement the window count
                                                        windowCount--;
                                        
                                                        // Unregister window class if we were the last window
                                                        if (windowCount == 0)
                                                            UnregisterClassW(className, GetModuleHandleW(NULL));
                                                    }
                                                    else
                                                    {
                                                        // The window is external: remove the hook on its message callback
                                                        SetWindowLongPtrW(m_handle, GWLP_WNDPROC, m_callback);
                                                    }
                                                }
                                        
                                                bool Win32Window::isOpen() const {
                                                    return m_opened;
                                                }
                                                void Win32Window::close() {
                                                    if (m_opened) {
                                                        m_opened = false;
                                                    }
                                                }
                                                ////////////////////////////////////////////////////////////
                                                WindowHandle Win32Window::getSystemHandle() const
                                                {
                                                    return m_handle;
                                                }
                                        
                                        
                                                ////////////////////////////////////////////////////////////
                                                void Win32Window::processEvents()
                                                {
                                                    // We process the window events only if we own it
                                                    if (!m_callback)
                                                    {
                                                        MSG message;
                                                        while (PeekMessageW(&message, NULL, 0, 0, PM_REMOVE))
                                                        {
                                                            TranslateMessage(&message);
                                                            DispatchMessageW(&message);
                                                        }
                                                    }
                                                }
                                        
                                        
                                                ////////////////////////////////////////////////////////////
                                                Vector2i Win32Window::getPosition() const
                                                {
                                                    RECT rect;
                                                    GetWindowRect(m_handle, &rect);
                                        
                                                    return Vector2i(rect.left, rect.top);
                                                }
                                        
                                        
                                                ////////////////////////////////////////////////////////////
                                                void Win32Window::setPosition(const Vector2i& position)
                                                {
                                                    SetWindowPos(m_handle, NULL, position.x, position.y, 0, 0, SWP_NOSIZE | SWP_NOZORDER);
                                        
                                                    if(m_cursorGrabbed)
                                                        grabCursor(true);
                                                }
                                        
                                        
                                                ////////////////////////////////////////////////////////////
                                                Vector2u Win32Window::getSize() const
                                                {
                                                    RECT rect;
                                                    GetClientRect(m_handle, &rect);
                                        
                                                    return Vector2u(rect.right - rect.left, rect.bottom - rect.top);
                                                }
                                        
                                        
                                                ////////////////////////////////////////////////////////////
                                                void Win32Window::setSize(const Vector2u& size)
                                                {
                                                    // SetWindowPos wants the total size of the window (including title bar and borders),
                                                    // so we have to compute it
                                                    RECT rectangle = {0, 0, static_cast<long>(size.x), static_cast<long>(size.y)};
                                                    AdjustWindowRect(&rectangle, GetWindowLong(m_handle, GWL_STYLE), false);
                                                    int width  = rectangle.right - rectangle.left;
                                                    int height = rectangle.bottom - rectangle.top;
                                        
                                                    SetWindowPos(m_handle, NULL, 0, 0, width, height, SWP_NOMOVE | SWP_NOZORDER);
                                                }
                                        
                                        
                                                ////////////////////////////////////////////////////////////
                                                void Win32Window::setTitle(const String& title)
                                                {
                                                    SetWindowTextW(m_handle, title.toWideString().c_str());
                                                }
                                        
                                        
                                                ////////////////////////////////////////////////////////////
                                                void Win32Window::setIcon(unsigned int width, unsigned int height, const Uint8* pixels)
                                                {
                                                    // First destroy the previous one
                                                    if (m_icon)
                                                        DestroyIcon(m_icon);
                                        
                                                    // Windows wants BGRA pixels: swap red and blue channels
                                                    std::vector<Uint8> iconPixels(width * height * 4);
                                                    for (std::size_t i = 0; i < iconPixels.size() / 4; ++i)
                                                    {
                                                        iconPixels[i * 4 + 0] = pixels[i * 4 + 2];
                                                        iconPixels[i * 4 + 1] = pixels[i * 4 + 1];
                                                        iconPixels[i * 4 + 2] = pixels[i * 4 + 0];
                                                        iconPixels[i * 4 + 3] = pixels[i * 4 + 3];
                                                    }
                                        
                                                    // Create the icon from the pixel array
                                                    m_icon = CreateIcon(GetModuleHandleW(NULL), width, height, 1, 32, NULL, &iconPixels[0]);
                                        
                                                    // Set it as both big and small icon of the window
                                                    if (m_icon)
                                                    {
                                                        SendMessageW(m_handle, WM_SETICON, ICON_BIG,   (LPARAM)m_icon);
                                                        SendMessageW(m_handle, WM_SETICON, ICON_SMALL, (LPARAM)m_icon);
                                                    }
                                                    else
                                                    {
                                                        err() << "Failed to set the window's icon" << std::endl;
                                                    }
                                                }
                                        
                                        
                                                ////////////////////////////////////////////////////////////
                                                void Win32Window::setVisible(bool visible)
                                                {
                                                    ShowWindow(m_handle, visible ? SW_SHOW : SW_HIDE);
                                                }
                                        
                                        
                                                ////////////////////////////////////////////////////////////
                                                void Win32Window::setMouseCursorVisible(bool visible)
                                                {
                                                    // Don't call twice ShowCursor with the same parameter value;
                                                    // we don't want to increment/decrement the internal counter
                                                    // more than once.
                                                    if (visible != m_cursorVisible)
                                                    {
                                                        m_cursorVisible = visible;
                                                        ShowCursor(visible);
                                                    }
                                                }
                                        
                                        
                                                ////////////////////////////////////////////////////////////
                                                void Win32Window::setMouseCursorGrabbed(bool grabbed)
                                                {
                                                    m_cursorGrabbed = grabbed;
                                                    grabCursor(m_cursorGrabbed);
                                                }
                                        
                                        
                                        
                                        
                                                ////////////////////////////////////////////////////////////
                                                void Win32Window::setKeyRepeatEnabled(bool enabled)
                                                {
                                                    m_keyRepeatEnabled = enabled;
                                                }
                                        
                                        
                                                ////////////////////////////////////////////////////////////
                                                void Win32Window::requestFocus()
                                                {
                                                    // Allow focus stealing only within the same process; compare PIDs of current and foreground window
                                                    DWORD thisPid       = GetWindowThreadProcessId(m_handle, NULL);
                                                    DWORD foregroundPid = GetWindowThreadProcessId(GetForegroundWindow(), NULL);
                                        
                                                    if (thisPid == foregroundPid)
                                                    {
                                                        // The window requesting focus belongs to the same process as the current window: steal focus
                                                        SetForegroundWindow(m_handle);
                                                    }
                                                    else
                                                    {
                                                        // Different process: don't steal focus, but create a taskbar notification ("flash")
                                                        FLASHWINFO info;
                                                        info.cbSize    = sizeof(info);
                                                        info.hwnd      = m_handle;
                                                        info.dwFlags   = FLASHW_TRAY;
                                                        info.dwTimeout = 0;
                                                        info.uCount    = 3;
                                        
                                                        FlashWindowEx(&info);
                                                    }
                                                }
                                        
                                        
                                                ////////////////////////////////////////////////////////////
                                                bool Win32Window::hasFocus() const
                                                {
                                                    return m_handle == GetForegroundWindow();
                                                }
                                        
                                        
                                                ////////////////////////////////////////////////////////////
                                                void Win32Window::registerWindowClass()
                                                {
                                                    WNDCLASSW windowClass;
                                                    windowClass.style         = 0;
                                                    windowClass.lpfnWndProc   = &Win32Window::globalOnEvent;
                                                    windowClass.cbClsExtra    = 0;
                                                    windowClass.cbWndExtra    = 0;
                                                    windowClass.hInstance     = GetModuleHandleW(NULL);
                                                    windowClass.hIcon         = NULL;
                                                    windowClass.hCursor       = 0;
                                                    windowClass.hbrBackground = 0;
                                                    windowClass.lpszMenuName  = NULL;
                                                    windowClass.lpszClassName = className;
                                                    RegisterClassW(&windowClass);
                                                }
                                        
                                        
                                                ////////////////////////////////////////////////////////////
                                                void Win32Window::switchToFullscreen(const VideoMode& mode)
                                                {
                                                    DEVMODE devMode;
                                                    devMode.dmSize       = sizeof(devMode);
                                                    devMode.dmPelsWidth  = mode.width;
                                                    devMode.dmPelsHeight = mode.height;
                                                    devMode.dmBitsPerPel = mode.bitsPerPixel;
                                                    devMode.dmFields     = DM_PELSWIDTH | DM_PELSHEIGHT | DM_BITSPERPEL;
                                        
                                                    // Apply fullscreen mode
                                                    if (ChangeDisplaySettingsW(&devMode, CDS_FULLSCREEN) != DISP_CHANGE_SUCCESSFUL)
                                                    {
                                                        err() << "Failed to change display mode for fullscreen" << std::endl;
                                                        return;
                                                    }
                                        
                                                    // Make the window flags compatible with fullscreen mode
                                                    SetWindowLongW(m_handle, GWL_STYLE, WS_POPUP | WS_CLIPCHILDREN | WS_CLIPSIBLINGS);
                                                    SetWindowLongW(m_handle, GWL_EXSTYLE, WS_EX_APPWINDOW);
                                        
                                                    // Resize the window so that it fits the entire screen
                                                    SetWindowPos(m_handle, HWND_TOP, 0, 0, mode.width, mode.height, SWP_FRAMECHANGED);
                                                    ShowWindow(m_handle, SW_SHOW);
                                        
                                                    // Set "this" as the current fullscreen window
                                                    fullscreenWindow = this;
                                                }
                                        
                                        
                                                ////////////////////////////////////////////////////////////
                                                void Win32Window::cleanup()
                                                {
                                                    // Restore the previous video mode (in case we were running in fullscreen)
                                                    if (fullscreenWindow == this)
                                                    {
                                                        ChangeDisplaySettingsW(NULL, 0);
                                                        fullscreenWindow = NULL;
                                                    }
                                        
                                                    // Unhide the mouse cursor (in case it was hidden)
                                                    setMouseCursorVisible(true);
                                        
                                                    // No longer track the cursor
                                                    setTracking(false);
                                        
                                                    // No longer capture the cursor
                                                    ReleaseCapture();
                                                }
                                        
                                        
                                                ////////////////////////////////////////////////////////////
                                                void Win32Window::setTracking(bool track)
                                                {
                                                    TRACKMOUSEEVENT mouseEvent;
                                                    mouseEvent.cbSize = sizeof(TRACKMOUSEEVENT);
                                                    mouseEvent.dwFlags = track ? TME_LEAVE : TME_CANCEL;
                                                    mouseEvent.hwndTrack = m_handle;
                                                    mouseEvent.dwHoverTime = HOVER_DEFAULT;
                                                    TrackMouseEvent(&mouseEvent);
                                                }
                                        
                                        
                                                ////////////////////////////////////////////////////////////
                                                void Win32Window::grabCursor(bool grabbed)
                                                {
                                                    if (grabbed)
                                                    {
                                                        RECT rect;
                                                        GetClientRect(m_handle, &rect);
                                                        MapWindowPoints(m_handle, NULL, reinterpret_cast<LPPOINT>(&rect), 2);
                                                        ClipCursor(&rect);
                                                    }
                                                    else
                                                    {
                                                        ClipCursor(NULL);
                                                    }
                                                }
                                                void Win32Window::pushEvent(IEvent& event) {
                                                    m_ievents.push(event);
                                                }
                                                bool Win32Window::popEvent(IEvent& event) {
                                                    // If the event queue is empty, let's first check if new events are available from the OS
                                                    if (m_ievents.empty())
                                                    {
                                                        // Get events from the system
                                                        processEvents();
                                                    }
                                        
                                                    // Pop the first event of the queue, if it is not empty
                                                    if (!m_ievents.empty())
                                                    {
                                                        event = m_ievents.front();
                                                        m_ievents.pop();
                                                        return true;
                                                    }
                                                    return false;
                                                }
                                                bool Win32Window::pollEvent(IEvent& event) {
                                                    return popEvent(event);
                                                }
                                                ////////////////////////////////////////////////////////////
                                                void Win32Window::processEvent(UINT message, WPARAM wParam, LPARAM lParam)
                                                {
                                                    // Don't process any message until window is created
                                                    if (m_handle == NULL)
                                                        return;
                                        
                                                    switch (message)
                                                    {
                                                        // Destroy event
                                                        case WM_DESTROY:
                                                        {
                                                            // Here we must cleanup resources !
                                                            cleanup();
                                                            break;
                                                        }
                                        
                                                        // Set cursor event
                                                        case WM_SETCURSOR:
                                                        {
                                                            // The mouse has moved, if the cursor is in our window we must refresh the cursor
                                                            if (LOWORD(lParam) == HTCLIENT)
                                                                SetCursor(m_lastCursor);
                                        
                                                            break;
                                                        }
                                        
                                                        // Close event
                                                        case WM_CLOSE:
                                                        {
                                                            IEvent event;
                                                            event.type = IEvent::EventType::WINDOW_EVENT;
                                                            std::chrono::time_point<std::chrono::system_clock> time = std::chrono::system_clock::now();
                                                            event.window.type = IEvent::WindowEventID::WINDOW_EVENT_CLOSED;
                                                            event.window.timestamp = std::chrono::system_clock::to_time_t(time);
                                                            pushEvent(event);
                                                            break;
                                                        }
                                        
                                                        // Resize event
                                                        case WM_SIZE:
                                                        {
                                                            // Consider only events triggered by a maximize or a un-maximize
                                                            if (wParam != SIZE_MINIMIZED && !m_resizing && m_lastSize != getSize())
                                                            {
                                                                // Update the last handled size
                                                                m_lastSize = getSize();
                                        
                                                                // Push a resize event
                                                                IEvent event;
                                                                event.type = IEvent::EventType::WINDOW_EVENT;
                                                                std::chrono::time_point<std::chrono::system_clock> time = std::chrono::system_clock::now();
                                                                event.window.type = IEvent::WindowEventID::WINDOW_EVENT_RESIZED;
                                                                event.window.timestamp = std::chrono::system_clock::to_time_t(time);
                                                                event.window.data1  = m_lastSize.x;
                                                                event.window.data2 = m_lastSize.y;
                                                                pushEvent(event);
                                        
                                                                // Restore/update cursor grabbing
                                                                grabCursor(m_cursorGrabbed);
                                                            }
                                                            break;
                                                        }
                                        
                                                        // Start resizing
                                                        case WM_ENTERSIZEMOVE:
                                                        {
                                                            m_resizing = true;
                                                            grabCursor(false);
                                                            break;
                                                        }
                                        
                                                        // Stop resizing
                                                        case WM_EXITSIZEMOVE:
                                                        {
                                                            m_resizing = false;
                                        
                                                            // Ignore cases where the window has only been moved
                                                            if(m_lastSize != getSize())
                                                            {
                                                                // Update the last handled size
                                                                m_lastSize = getSize();
                                        
                                                                // Push a resize event
                                                                IEvent event;
                                                                event.type = IEvent::EventType::WINDOW_EVENT;
                                                                std::chrono::time_point<std::chrono::system_clock> time = std::chrono::system_clock::now();
                                                                event.window.type = IEvent::WindowEventID::WINDOW_EVENT_RESIZED;
                                                                event.window.timestamp = std::chrono::system_clock::to_time_t(time);
                                                                event.window.data1  = m_lastSize.x;
                                                                event.window.data2 = m_lastSize.y;
                                                                pushEvent(event);
                                                            }
                                        
                                                            // Restore/update cursor grabbing
                                                            grabCursor(m_cursorGrabbed);
                                                            break;
                                                        }
                                        
                                                        // The system request the min/max window size and position
                                                        case WM_GETMINMAXINFO:
                                                        {
                                                            // We override the returned information to remove the default limit
                                                            // (the OS doesn't allow windows bigger than the desktop by default)
                                                            MINMAXINFO* info = reinterpret_cast<MINMAXINFO*>(lParam);
                                                            info->ptMaxTrackSize.x = 50000;
                                                            info->ptMaxTrackSize.y = 50000;
                                                            break;
                                                        }
                                        
                                                        // Gain focus event
                                                        case WM_SETFOCUS:
                                                        {
                                                            // Restore cursor grabbing
                                                            grabCursor(m_cursorGrabbed);
                                        
                                                            IEvent event;
                                                            event.type = IEvent::EventType::WINDOW_EVENT;
                                                            std::chrono::time_point<std::chrono::system_clock> time = std::chrono::system_clock::now();
                                                            event.window.type = IEvent::WindowEventID::WINDOW_EVENT_FOCUS_GAIGNED;
                                                            event.window.timestamp = std::chrono::system_clock::to_time_t(time);
                                                            pushEvent(event);
                                                            break;
                                                        }
                                        
                                                        // Lost focus event
                                                        case WM_KILLFOCUS:
                                                        {
                                                            // Ungrab the cursor
                                                            grabCursor(false);
                                        
                                                            IEvent event;
                                                            event.type = IEvent::EventType::WINDOW_EVENT;
                                                            std::chrono::time_point<std::chrono::system_clock> time = std::chrono::system_clock::now();
                                                            event.window.type = IEvent::WindowEventID::WINDOW_EVENT_FOCUS_LOST;
                                                            event.window.timestamp = std::chrono::system_clock::to_time_t(time);
                                                            pushEvent(event);
                                                            break;
                                                        }
                                        
                                                        // Text event
                                                        case WM_CHAR:
                                                        {
                                                            if (m_keyRepeatEnabled || ((lParam & (1 << 30)) == 0))
                                                            {
                                                                // Get the code of the typed character
                                                                Uint32 character = static_cast<Uint32>(wParam);
                                        
                                                                // Check if it is the first part of a surrogate pair, or a regular character
                                                                if ((character >= 0xD800) && (character <= 0xDBFF))
                                                                {
                                                                    // First part of a surrogate pair: store it and wait for the second one
                                                                    m_surrogate = static_cast<Uint16>(character);
                                                                }
                                                                else
                                                                {
                                                                    // Check if it is the second part of a surrogate pair, or a regular character
                                                                    if ((character >= 0xDC00) && (character <= 0xDFFF))
                                                                    {
                                                                        // Convert the UTF-16 surrogate pair to a single UTF-32 value
                                                                        Uint16 utf16[] = {m_surrogate, static_cast<Uint16>(character)};
                                                                        sf::Utf16::toUtf32(utf16, utf16 + 2, &character);
                                                                        m_surrogate = 0;
                                                                    }
                                        
                                                                    // Send a TextEntered event
                                                                    IEvent textEvent;
                                                                    textEvent.type = IEvent::EventType::TEXT_INPUT_EVENT;
                                                                    std::chrono::time_point<std::chrono::system_clock> time = std::chrono::system_clock::now();
                                                                    textEvent.text.type = IEvent::EventType::TEXT_INPUT_EVENT;
                                                                    textEvent.text.timestamp = std::chrono::system_clock::to_time_t(time);
                                                                    textEvent.text.unicode = character;
                                                                    pushEvent(textEvent);
                                                                }
                                                            }
                                                            break;
                                                        }
                                        
                                                        // Keydown event
                                                        case WM_KEYDOWN:
                                                        case WM_SYSKEYDOWN:
                                                        {
                                                            if (m_keyRepeatEnabled || ((HIWORD(lParam) & KF_REPEAT) == 0))
                                                            {
                                                                IEvent event;
                                                                event.type        = IEvent::EventType::KEYBOARD_EVENT;
                                                                event.keyboard.type    = IEvent::KeyEventID::KEY_EVENT_PRESSED;
                                                                event.keyboard.alt     = HIWORD(GetKeyState(VK_MENU))    != 0;
                                                                event.keyboard.control = HIWORD(GetKeyState(VK_CONTROL)) != 0;
                                                                event.keyboard.shift   = HIWORD(GetKeyState(VK_SHIFT))   != 0;
                                                                event.keyboard.system  = HIWORD(GetKeyState(VK_LWIN)) || HIWORD(GetKeyState(VK_RWIN));
                                                                event.keyboard.code    = virtualKeyCodeToODFAEG(wParam, lParam);
                                                                pushEvent(event);
                                                            }
                                                            break;
                                                        }
                                        
                                                        // Keyup event
                                                        case WM_KEYUP:
                                                        case WM_SYSKEYUP:
                                                        {
                                                            IEvent event;
                                                            event.type = IEvent::EventType::KEYBOARD_EVENT;
                                                            std::chrono::time_point<std::chrono::system_clock> time = std::chrono::system_clock::now();
                                                            event.keyboard.type = IEvent::KeyEventID::KEY_EVENT_RELEASED;
                                                            event.keyboard.timestamp = std::chrono::system_clock::to_time_t(time);
                                                            event.keyboard.alt     = HIWORD(GetKeyState(VK_MENU))    != 0;
                                                            event.keyboard.control = HIWORD(GetKeyState(VK_CONTROL)) != 0;
                                                            event.keyboard.shift   = HIWORD(GetKeyState(VK_SHIFT))   != 0;
                                                            event.keyboard.system  = HIWORD(GetKeyState(VK_LWIN)) || HIWORD(GetKeyState(VK_RWIN));
                                                            event.keyboard.code    = virtualKeyCodeToODFAEG(wParam, lParam);
                                                            pushEvent(event);
                                                            break;
                                                        }
                                        
                                                        // Vertical mouse wheel event
                                                        case WM_MOUSEWHEEL:
                                                        {
                                                            // Mouse position is in screen coordinates, convert it to window coordinates
                                                            POINT position;
                                                            position.x = static_cast<Int16>(LOWORD(lParam));
                                                            position.y = static_cast<Int16>(HIWORD(lParam));
                                                            ScreenToClient(m_handle, &position);
                                        
                                                            Int16 delta = static_cast<Int16>(HIWORD(wParam));
                                        
                                                            IEvent event;
                                                            event.type          = IEvent::EventType::MOUSE_WHEEL_EVENT;
                                                            std::chrono::time_point<std::chrono::system_clock> time = std::chrono::system_clock::now();
                                                            event.mouseButton.type = IEvent::MouseEventID::MOUSE_WHEEL_MOVED;
                                                            event.mouseButton.timestamp = std::chrono::system_clock::to_time_t(time);
                                                            event.mouseWheel.direction = delta / 120;
                                                            event.mouseWheel.x     = position.x;
                                                            event.mouseWheel.y     = position.y;
                                                            pushEvent(event);
                                                            break;
                                                        }
                                        
                                                        // Horizontal mouse wheel event
                                                       /* case WM_MOUSEHWHEEL:
                                                        {
                                                            // Mouse position is in screen coordinates, convert it to window coordinates
                                                            POINT position;
                                                            position.x = static_cast<Int16>(LOWORD(lParam));
                                                            position.y = static_cast<Int16>(HIWORD(lParam));
                                                            ScreenToClient(m_handle, &position);
                                        
                                                            Int16 delta = static_cast<Int16>(HIWORD(wParam));
                                        
                                                            Event event;
                                                            event.type                   = Event::MouseWheelScrolled;
                                                            event.mouseWheelScroll.wheel = Mouse::HorizontalWheel;
                                                            event.mouseWheelScroll.delta = -static_cast<float>(delta) / 120.f;
                                                            event.mouseWheelScroll.x     = position.x;
                                                            event.mouseWheelScroll.y     = position.y;
                                                            pushEvent(event);
                                                            break;
                                                        }*/
                                        
                                                        // Mouse left button down event
                                                        case WM_LBUTTONDOWN:
                                                        {
                                                            IEvent event;
                                                            event.type          = IEvent::EventType::MOUSE_BUTTON_EVENT;
                                                            std::chrono::time_point<std::chrono::system_clock> time = std::chrono::system_clock::now();
                                                            event.mouseButton.type = IEvent::MouseEventID::BUTTON_EVENT_PRESSED;
                                                            event.mouseButton.button = IMouse::Left;
                                                            event.mouseButton.x      = static_cast<Int16>(LOWORD(lParam));
                                                            event.mouseButton.y      = static_cast<Int16>(HIWORD(lParam));
                                                            pushEvent(event);
                                                            break;
                                                        }
                                        
                                                        // Mouse left button up event
                                                        case WM_LBUTTONUP:
                                                        {
                                                            IEvent event;
                                                            event.type          = IEvent::EventType::MOUSE_BUTTON_EVENT;
                                                            std::chrono::time_point<std::chrono::system_clock> time = std::chrono::system_clock::now();
                                                            event.mouseButton.type = IEvent::MouseEventID::BUTTON_EVENT_RELEASED;
                                                            event.mouseButton.timestamp = std::chrono::system_clock::to_time_t(time);
                                                            event.mouseButton.button = IMouse::Left;
                                                            event.mouseButton.x      = static_cast<Int16>(LOWORD(lParam));
                                                            event.mouseButton.y      = static_cast<Int16>(HIWORD(lParam));
                                                            pushEvent(event);
                                                            break;
                                                        }
                                        
                                                        // Mouse right button down event
                                                        case WM_RBUTTONDOWN:
                                                        {
                                                            IEvent event;
                                                            event.type          = IEvent::EventType::MOUSE_BUTTON_EVENT;
                                                            std::chrono::time_point<std::chrono::system_clock> time = std::chrono::system_clock::now();
                                                            event.mouseButton.type = IEvent::MouseEventID::BUTTON_EVENT_PRESSED;
                                                            event.mouseButton.timestamp = std::chrono::system_clock::to_time_t(time);
                                                            event.mouseButton.button = IMouse::Right;
                                                            event.mouseButton.x      = static_cast<Int16>(LOWORD(lParam));
                                                            event.mouseButton.y      = static_cast<Int16>(HIWORD(lParam));
                                                            pushEvent(event);
                                                            break;
                                                        }
                                        
                                                        // Mouse right button up event
                                                        case WM_RBUTTONUP:
                                                        {
                                                            IEvent event;
                                                            event.type          = IEvent::EventType::MOUSE_BUTTON_EVENT;
                                                            std::chrono::time_point<std::chrono::system_clock> time = std::chrono::system_clock::now();
                                                            event.mouseButton.type = IEvent::MouseEventID::BUTTON_EVENT_RELEASED;
                                                            event.mouseButton.timestamp = std::chrono::system_clock::to_time_t(time);
                                                            event.mouseButton.button = IMouse::Right;
                                                            event.mouseButton.x      = static_cast<Int16>(LOWORD(lParam));
                                                            event.mouseButton.y      = static_cast<Int16>(HIWORD(lParam));
                                                            pushEvent(event);
                                                            break;
                                                        }
                                        
                                                        // Mouse wheel button down event
                                                        case WM_MBUTTONDOWN:
                                                        {
                                                            IEvent event;
                                                            event.type          = IEvent::EventType::MOUSE_BUTTON_EVENT;
                                                            std::chrono::time_point<std::chrono::system_clock> time = std::chrono::system_clock::now();
                                                            event.mouseButton.type = IEvent::MouseEventID::BUTTON_EVENT_PRESSED;
                                                            event.mouseButton.timestamp = std::chrono::system_clock::to_time_t(time);
                                                            event.mouseButton.button = IMouse::Middle;
                                                            event.mouseButton.x      = static_cast<Int16>(LOWORD(lParam));
                                                            event.mouseButton.y      = static_cast<Int16>(HIWORD(lParam));
                                                            pushEvent(event);
                                                            break;
                                                        }
                                        
                                                        // Mouse wheel button up event
                                                        case WM_MBUTTONUP:
                                                        {
                                                            IEvent event;
                                                            event.type          = IEvent::EventType::MOUSE_BUTTON_EVENT;
                                                            std::chrono::time_point<std::chrono::system_clock> time = std::chrono::system_clock::now();
                                                            event.mouseButton.type = IEvent::MouseEventID::BUTTON_EVENT_RELEASED;
                                                            event.mouseButton.timestamp = std::chrono::system_clock::to_time_t(time);
                                                            event.mouseButton.button = IMouse::Middle;
                                                            event.mouseButton.x      = static_cast<Int16>(LOWORD(lParam));
                                                            event.mouseButton.y      = static_cast<Int16>(HIWORD(lParam));
                                                            pushEvent(event);
                                                            break;
                                                        }
                                        
                                                        // Mouse X button down event
                                                        case WM_XBUTTONDOWN:
                                                        {
                                                            IEvent event;
                                                            event.type          = IEvent::EventType::MOUSE_BUTTON_EVENT;
                                                            std::chrono::time_point<std::chrono::system_clock> time = std::chrono::system_clock::now();
                                                            event.mouseButton.type = IEvent::MouseEventID::BUTTON_EVENT_PRESSED;
                                                            event.mouseButton.timestamp = std::chrono::system_clock::to_time_t(time);
                                                            event.mouseButton.button = HIWORD(wParam) == XBUTTON1 ? IMouse::XButton1 : IMouse::XButton2;
                                                            event.mouseButton.x      = static_cast<Int16>(LOWORD(lParam));
                                                            event.mouseButton.y      = static_cast<Int16>(HIWORD(lParam));
                                                            pushEvent(event);
                                                            break;
                                                        }
                                        
                                                        // Mouse X button up event
                                                        case WM_XBUTTONUP:
                                                        {
                                                            IEvent event;
                                                            event.type          = IEvent::EventType::MOUSE_BUTTON_EVENT;
                                                            std::chrono::time_point<std::chrono::system_clock> time = std::chrono::system_clock::now();
                                                            event.mouseButton.type = IEvent::MouseEventID::BUTTON_EVENT_RELEASED;
                                                            event.mouseButton.timestamp = std::chrono::system_clock::to_time_t(time);
                                                            event.mouseButton.button = HIWORD(wParam) == XBUTTON1 ? IMouse::XButton1 : IMouse::XButton2;
                                                            event.mouseButton.x      = static_cast<Int16>(LOWORD(lParam));
                                                            event.mouseButton.y      = static_cast<Int16>(HIWORD(lParam));
                                                            pushEvent(event);
                                                            break;
                                                        }
                                        
                                                        // Mouse leave event
                                                        case WM_MOUSELEAVE:
                                                        {
                                                            // Avoid this firing a second time in case the cursor is dragged outside
                                                            if (m_mouseInside)
                                                            {
                                                                m_mouseInside = false;
                                        
                                                                // Generate a MouseLeft event
                                                                IEvent event;
                                                                event.type = IEvent::EventType::MOUSE_EVENT_LEAVE;
                                                                std::chrono::time_point<std::chrono::system_clock> time = std::chrono::system_clock::now();
                                                                event.mouseMotion.type = IEvent::EventType::MOUSE_EVENT_LEAVE;
                                                                pushEvent(event);
                                                            }
                                                            break;
                                                        }
                                        
                                                        // Mouse move event
                                                        case WM_MOUSEMOVE:
                                                        {
                                                            // Extract the mouse local coordinates
                                                            int x = static_cast<Int16>(LOWORD(lParam));
                                                            int y = static_cast<Int16>(HIWORD(lParam));
                                        
                                                            // Get the client area of the window
                                                            RECT area;
                                                            GetClientRect(m_handle, &area);
                                        
                                                            // Capture the mouse in case the user wants to drag it outside
                                                            if ((wParam & (MK_LBUTTON | MK_MBUTTON | MK_RBUTTON | MK_XBUTTON1 | MK_XBUTTON2)) == 0)
                                                            {
                                                                // Only release the capture if we really have it
                                                                if (GetCapture() == m_handle)
                                                                    ReleaseCapture();
                                                            }
                                                            else if (GetCapture() != m_handle)
                                                            {
                                                                // Set the capture to continue receiving mouse events
                                                                SetCapture(m_handle);
                                                            }
                                        
                                                            // If the cursor is outside the client area...
                                                            if ((x < area.left) || (x > area.right) || (y < area.top) || (y > area.bottom))
                                                            {
                                                                // and it used to be inside, the mouse left it.
                                                                if (m_mouseInside)
                                                                {
                                                                    m_mouseInside = false;
                                        
                                                                    // No longer care for the mouse leaving the window
                                                                    setTracking(false);
                                        
                                                                    // Generate a MouseLeft event
                                                                    IEvent event;
                                                                    event.type = IEvent::EventType::MOUSE_EVENT_LEAVE;
                                                                    std::chrono::time_point<std::chrono::system_clock> time = std::chrono::system_clock::now();
                                                                    event.mouseMotion.type = IEvent::EventType::MOUSE_EVENT_LEAVE;
                                                                    pushEvent(event);
                                                                }
                                                            }
                                                            else
                                                            {
                                                                // and vice-versa
                                                                if (!m_mouseInside)
                                                                {
                                                                    m_mouseInside = true;
                                        
                                                                    // Look for the mouse leaving the window
                                                                    setTracking(true);
                                        
                                                                    // Generate a MouseEntered event
                                                                   IEvent event;
                                                                    event.type = IEvent::EventType::MOUSE_EVENT_ENTER;
                                                                    std::chrono::time_point<std::chrono::system_clock> time = std::chrono::system_clock::now();
                                                                    event.mouseMotion.type = IEvent::EventType::MOUSE_EVENT_ENTER;
                                                                    pushEvent(event);
                                                                }
                                                            }
                                        
                                                            // Generate a MouseMove event
                                                            IEvent event;
                                                            event.type = IEvent::EventType::MOUSE_MOTION_EVENT;
                                                            std::chrono::time_point<std::chrono::system_clock> time = std::chrono::system_clock::now();
                                                            event.mouseMotion.type = IEvent::EventType::MOUSE_MOTION_EVENT;
                                                            event.mouseMotion.timestamp = std::chrono::system_clock::to_time_t(time);
                                                            event.mouseMotion.x = x;
                                                            event.mouseMotion.y = y;
                                                            pushEvent(event);
                                                            break;
                                                        }
                                                        /*case WM_DEVICECHANGE:
                                                        {
                                                            // Some sort of device change has happened, update joystick connections
                                                            if ((wParam == DBT_DEVICEARRIVAL) || (wParam == DBT_DEVICEREMOVECOMPLETE))
                                                            {
                                                                // Some sort of device change has happened, update joystick connections if it is a device interface
                                                                DEV_BROADCAST_HDR* deviceBroadcastHeader = reinterpret_cast<DEV_BROADCAST_HDR*>(lParam);
                                        
                                                                if (deviceBroadcastHeader && (deviceBroadcastHeader->dbch_devicetype == DBT_DEVTYP_DEVICEINTERFACE))
                                                                    JoystickImpl::updateConnections();
                                                            }
                                        
                                                            break;
                                                        }*/
                                                    }
                                                }
                                        
                                        
                                                ////////////////////////////////////////////////////////////
                                                IKeyboard::Key Win32Window::virtualKeyCodeToODFAEG(WPARAM key, LPARAM flags)
                                                {
                                                    switch (key)
                                                    {
                                                        // Check the scancode to distinguish between left and right shift
                                                        case VK_SHIFT:
                                                        {
                                                            static UINT lShift = MapVirtualKeyW(VK_LSHIFT, MAPVK_VK_TO_VSC);
                                                            UINT scancode = static_cast<UINT>((flags & (0xFF << 16)) >> 16);
                                                            return scancode == lShift ? odfaeg::window::IKeyboard::LShift : odfaeg::window::IKeyboard::RShift;
                                                        }
                                        
                                                        // Check the "extended" flag to distinguish between left and right alt
                                                        case VK_MENU : return (HIWORD(flags) & KF_EXTENDED) ? odfaeg::window::IKeyboard::RAlt : odfaeg::window::IKeyboard::LAlt;
                                        
                                                        // Check the "extended" flag to distinguish between left and right control
                                                        case VK_CONTROL : return (HIWORD(flags) & KF_EXTENDED) ? odfaeg::window::IKeyboard::RControl : odfaeg::window::IKeyboard::LControl;
                                        
                                                        // Other keys are reported properly
                                                        case VK_LWIN:       return odfaeg::window::IKeyboard::LSystem;
                                                        case VK_RWIN:       return odfaeg::window::IKeyboard::RSystem;
                                                        case VK_APPS:       return odfaeg::window::IKeyboard::Menu;
                                                        case VK_OEM_1:      return odfaeg::window::IKeyboard::Semicolon;
                                                        case VK_OEM_2:      return odfaeg::window::IKeyboard::Slash;
                                                        case VK_OEM_PLUS:   return odfaeg::window::IKeyboard::Equal;
                                                        case VK_OEM_MINUS:  return odfaeg::window::IKeyboard::Hyphen;
                                                        case VK_OEM_4:      return odfaeg::window::IKeyboard::LBracket;
                                                        case VK_OEM_6:      return odfaeg::window::IKeyboard::RBracket;
                                                        case VK_OEM_COMMA:  return odfaeg::window::IKeyboard::Comma;
                                                        case VK_OEM_PERIOD: return odfaeg::window::IKeyboard::Period;
                                                        case VK_OEM_7:      return odfaeg::window::IKeyboard::Quote;
                                                        case VK_OEM_5:      return odfaeg::window::IKeyboard::Backslash;
                                                        case VK_OEM_3:      return odfaeg::window::IKeyboard::Tilde;
                                                        case VK_ESCAPE:     return odfaeg::window::IKeyboard::Escape;
                                                        case VK_SPACE:      return odfaeg::window::IKeyboard::Space;
                                                        case VK_RETURN:     return odfaeg::window::IKeyboard::Enter;
                                                        case VK_BACK:       return odfaeg::window::IKeyboard::Backspace;
                                                        case VK_TAB:        return odfaeg::window::IKeyboard::Tab;
                                                        case VK_PRIOR:      return odfaeg::window::IKeyboard::PageUp;
                                                        case VK_NEXT:       return odfaeg::window::IKeyboard::PageDown;
                                                        case VK_END:        return odfaeg::window::IKeyboard::End;
                                                        case VK_HOME:       return odfaeg::window::IKeyboard::Home;
                                                        case VK_INSERT:     return odfaeg::window::IKeyboard::Insert;
                                                        case VK_DELETE:     return odfaeg::window::IKeyboard::Delete;
                                                        case VK_ADD:        return odfaeg::window::IKeyboard::Add;
                                                        case VK_SUBTRACT:   return odfaeg::window::IKeyboard::Subtract;
                                                        case VK_MULTIPLY:   return odfaeg::window::IKeyboard::Multiply;
                                                        case VK_DIVIDE:     return odfaeg::window::IKeyboard::Divide;
                                                        case VK_PAUSE:      return odfaeg::window::IKeyboard::Pause;
                                                        case VK_F1:         return odfaeg::window::IKeyboard::F1;
                                                        case VK_F2:         return odfaeg::window::IKeyboard::F2;
                                                        case VK_F3:         return odfaeg::window::IKeyboard::F3;
                                                        case VK_F4:         return odfaeg::window::IKeyboard::F4;
                                                        case VK_F5:         return odfaeg::window::IKeyboard::F5;
                                                        case VK_F6:         return odfaeg::window::IKeyboard::F6;
                                                        case VK_F7:         return odfaeg::window::IKeyboard::F7;
                                                        case VK_F8:         return odfaeg::window::IKeyboard::F8;
                                                        case VK_F9:         return odfaeg::window::IKeyboard::F9;
                                                        case VK_F10:        return odfaeg::window::IKeyboard::F10;
                                                        case VK_F11:        return odfaeg::window::IKeyboard::F11;
                                                        case VK_F12:        return odfaeg::window::IKeyboard::F12;
                                                        case VK_F13:        return odfaeg::window::IKeyboard::F13;
                                                        case VK_F14:        return odfaeg::window::IKeyboard::F14;
                                                        case VK_F15:        return odfaeg::window::IKeyboard::F15;
                                                        case VK_LEFT:       return odfaeg::window::IKeyboard::Left;
                                                        case VK_RIGHT:      return odfaeg::window::IKeyboard::Right;
                                                        case VK_UP:         return odfaeg::window::IKeyboard::Up;
                                                        case VK_DOWN:       return odfaeg::window::IKeyboard::Down;
                                                        case VK_NUMPAD0:    return odfaeg::window::IKeyboard::Numpad0;
                                                        case VK_NUMPAD1:    return odfaeg::window::IKeyboard::Numpad1;
                                                        case VK_NUMPAD2:    return odfaeg::window::IKeyboard::Numpad2;
                                                        case VK_NUMPAD3:    return odfaeg::window::IKeyboard::Numpad3;
                                                        case VK_NUMPAD4:    return odfaeg::window::IKeyboard::Numpad4;
                                                        case VK_NUMPAD5:    return odfaeg::window::IKeyboard::Numpad5;
                                                        case VK_NUMPAD6:    return odfaeg::window::IKeyboard::Numpad6;
                                                        case VK_NUMPAD7:    return odfaeg::window::IKeyboard::Numpad7;
                                                        case VK_NUMPAD8:    return odfaeg::window::IKeyboard::Numpad8;
                                                        case VK_NUMPAD9:    return odfaeg::window::IKeyboard::Numpad9;
                                                        case 'A':           return odfaeg::window::IKeyboard::A;
                                                        case 'Z':           return odfaeg::window::IKeyboard::Z;
                                                        case 'E':           return odfaeg::window::IKeyboard::E;
                                                        case 'R':           return odfaeg::window::IKeyboard::R;
                                                        case 'T':           return odfaeg::window::IKeyboard::T;
                                                        case 'Y':           return odfaeg::window::IKeyboard::Y;
                                                        case 'U':           return odfaeg::window::IKeyboard::U;
                                                        case 'I':           return odfaeg::window::IKeyboard::I;
                                                        case 'O':           return odfaeg::window::IKeyboard::O;
                                                        case 'P':           return odfaeg::window::IKeyboard::P;
                                                        case 'Q':           return odfaeg::window::IKeyboard::Q;
                                                        case 'S':           return odfaeg::window::IKeyboard::S;
                                                        case 'D':           return odfaeg::window::IKeyboard::D;
                                                        case 'F':           return odfaeg::window::IKeyboard::F;
                                                        case 'G':           return odfaeg::window::IKeyboard::G;
                                                        case 'H':           return odfaeg::window::IKeyboard::H;
                                                        case 'J':           return odfaeg::window::IKeyboard::J;
                                                        case 'K':           return odfaeg::window::IKeyboard::K;
                                                        case 'L':           return odfaeg::window::IKeyboard::L;
                                                        case 'M':           return odfaeg::window::IKeyboard::M;
                                                        case 'W':           return odfaeg::window::IKeyboard::W;
                                                        case 'X':           return odfaeg::window::IKeyboard::X;
                                                        case 'C':           return odfaeg::window::IKeyboard::C;
                                                        case 'V':           return odfaeg::window::IKeyboard::V;
                                                        case 'B':           return odfaeg::window::IKeyboard::B;
                                                        case 'N':           return odfaeg::window::IKeyboard::N;
                                                        case '0':           return odfaeg::window::IKeyboard::Num0;
                                                        case '1':           return odfaeg::window::IKeyboard::Num1;
                                                        case '2':           return odfaeg::window::IKeyboard::Num2;
                                                        case '3':           return odfaeg::window::IKeyboard::Num3;
                                                        case '4':           return odfaeg::window::IKeyboard::Num4;
                                                        case '5':           return odfaeg::window::IKeyboard::Num5;
                                                        case '6':           return odfaeg::window::IKeyboard::Num6;
                                                        case '7':           return odfaeg::window::IKeyboard::Num7;
                                                        case '8':           return odfaeg::window::IKeyboard::Num8;
                                                        case '9':           return odfaeg::window::IKeyboard::Num9;
                                                    }
                                        
                                                    return odfaeg::window::IKeyboard::Unknown;
                                                }
                                        
                                        
                                                ////////////////////////////////////////////////////////////
                                                LRESULT CALLBACK Win32Window::globalOnEvent(HWND handle, UINT message, WPARAM wParam, LPARAM lParam)
                                                {
                                                    // Associate handle and Window instance when the creation message is received
                                                    if (message == WM_CREATE)
                                                    {
                                                        // Get Win32Window instance (it was passed as the last argument of CreateWindow)
                                                        LONG_PTR window = (LONG_PTR)reinterpret_cast<CREATESTRUCT*>(lParam)->lpCreateParams;
                                        
                                                        // Set as the "user data" parameter of the window
                                                        SetWindowLongPtrW(handle, GWLP_USERDATA, window);
                                                    }
                                        
                                                    // Get the WindowImpl instance corresponding to the window handle
                                                    Win32Window* window = handle ? reinterpret_cast<Win32Window*>(GetWindowLongPtr(handle, GWLP_USERDATA)) : NULL;
                                        
                                                    // Forward the event to the appropriate function
                                                    if (window)
                                                    {
                                                        window->processEvent(message, wParam, lParam);
                                        
                                                        if (window->m_callback)
                                                            return CallWindowProcW(reinterpret_cast<WNDPROC>(window->m_callback), handle, message, wParam, lParam);
                                                    }
                                        
                                                    // We don't forward the WM_CLOSE message to prevent the OS from automatically destroying the window
                                                    if (message == WM_CLOSE)
                                                        return 0;
                                        
                                                    // Don't forward the menu system command, so that pressing ALT or F10 doesn't steal the focus
                                                    if ((message == WM_SYSCOMMAND) && (wParam == SC_KEYMENU))
                                                        return 0;
                                        
                                                    return DefWindowProcW(handle, message, wParam, lParam);
                                                }
                                            }
                                        }
                                        

                                        Je dois faire un cast ou quoi ?

                                        Sous mingw je n'avais pas d'erreurs.


                                        -
                                        Edité par OmbreNoire 28 janvier 2020 à 20:52:52

                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          28 janvier 2020 à 21:03:26

                                          Il faut mettre Windows en Unicode (avant le include de Windows.h):

                                          #ifndef UNICODE
                                          #define UNICODE
                                          #endif
                                          
                                          #ifndef _UNICODE
                                          #define _UNICODE
                                          #endif
                                          
                                          #include <Windows.h> 

                                          Notepad++ est devenue un peu instable avec l'ajout du débogueur (c'est le prix à payer mais au moins on peut mettre des breakpoint dans npp)

                                          Il est sûrement resté ouvert dans les tâche en arrière plan. Tu peux le fermer avec task manager ou Process explorer.

                                          • Partager sur Facebook
                                          • Partager sur Twitter

                                          GZE, un moteur multiplateforme, adapté pour de la 2D, 3D et création de logiciels.

                                            28 janvier 2020 à 21:39:37

                                            Il faut mettre Windows en Unicode (avant le include de Windows.h):

                                            J'ai essayé mais ça ne change rien.

                                            Notepad++ est devenue un peu instable avec l'ajout du débogueur (c'est le prix à payer mais au moins on peut mettre des breakpoint dans npp)

                                            Il est sûrement resté ouvert dans les tâche en arrière plan. Tu peux le fermer avec task manager ou Process explorer.

                                            Je ne le vois pas dans le gestionnaire des tâches. Je l'ai ouvert avec le bloc note avec lui ça marche.

                                            Purée j'ai des erreur de partout!

                                            In file included from ../ODFAEG/src/odfaeg/Graphics/perPixelLinkedListRenderComponent.cpp:4:
                                            ../ODFAEG/src/odfaeg/Graphics/perPixelLinkedListRenderComponent.cpp: In constructor 'odfaeg::graphic::PerPixelLinkedListRenderComponent::PerPixelLinkedListRenderComponent(odfaeg::graphic::RenderWindow&, int, std::__cxx11::string, odfaeg::window::ContextSettings)':
                                            ../ODFAEG/src/odfaeg/Graphics/perPixelLinkedListRenderComponent.cpp:23:34: error: 'GL_ATOMIC_COUNTER_BUFFER' was not declared in this scope
                                                         glCheck(glBindBuffer(GL_ATOMIC_COUNTER_BUFFER, atomicBuffer));
                                                                              ^~~~~~~~~~~~~~~~~~~~~~~~
                                            ../ODFAEG/src/odfaeg/Graphics/glCheck.h:44:41: note: in definition of macro 'glCheck'
                                                             #define glCheck(call) ((call), odfaeg::graphic::priv::glCheckError(__FILE__, __LINE__))
                                                                                     ^~~~
                                            ../ODFAEG/src/odfaeg/Graphics/perPixelLinkedListRenderComponent.cpp:23:34: note: suggested alternative: 'GL_COPY_WRITE_BUFFER'
                                                         glCheck(glBindBuffer(GL_ATOMIC_COUNTER_BUFFER, atomicBuffer));
                                                                              ^~~~~~~~~~~~~~~~~~~~~~~~
                                            ../ODFAEG/src/odfaeg/Graphics/glCheck.h:44:41: note: in definition of macro 'glCheck'
                                                             #define glCheck(call) ((call), odfaeg::graphic::priv::glCheckError(__FILE__, __LINE__))
                                                                                     ^~~~
                                            ../ODFAEG/src/odfaeg/Graphics/perPixelLinkedListRenderComponent.cpp:27:34: error: 'GL_SHADER_STORAGE_BUFFER' was not declared in this scope
                                                         glCheck(glBindBuffer(GL_SHADER_STORAGE_BUFFER, linkedListBuffer));
                                                                              ^~~~~~~~~~~~~~~~~~~~~~~~
                                            ../ODFAEG/src/odfaeg/Graphics/glCheck.h:44:41: note: in definition of macro 'glCheck'
                                                             #define glCheck(call) ((call), odfaeg::graphic::priv::glCheckError(__FILE__, __LINE__))
                                                                                     ^~~~
                                            ../ODFAEG/src/odfaeg/Graphics/perPixelLinkedListRenderComponent.cpp:27:34: note: suggested alternative: 'GL_READ_FRAMEBUFFER'
                                                         glCheck(glBindBuffer(GL_SHADER_STORAGE_BUFFER, linkedListBuffer));
                                                                              ^~~~~~~~~~~~~~~~~~~~~~~~
                                            ../ODFAEG/src/odfaeg/Graphics/glCheck.h:44:41: note: in definition of macro 'glCheck'
                                                             #define glCheck(call) ((call), odfaeg::graphic::priv::glCheckError(__FILE__, __LINE__))
                                                                                     ^~~~
                                            ../ODFAEG/src/odfaeg/Graphics/perPixelLinkedListRenderComponent.cpp:32:21: error: 'glTexStorage2D' was not declared in this scope
                                                         glCheck(glTexStorage2D(GL_TEXTURE_2D, 1, GL_R32UI, window.getView().getSize().x, window.getView().getSize().y));
                                                                 ^~~~~~~~~~~~~~
                                            ../ODFAEG/src/odfaeg/Graphics/glCheck.h:44:41: note: in definition of macro 'glCheck'
                                                             #define glCheck(call) ((call), odfaeg::graphic::priv::glCheckError(__FILE__, __LINE__))
                                                                                     ^~~~
                                            ../ODFAEG/src/odfaeg/Graphics/perPixelLinkedListRenderComponent.cpp:32:21: note: suggested alternative: 'glTexSubImage2D'
                                                         glCheck(glTexStorage2D(GL_TEXTURE_2D, 1, GL_R32UI, window.getView().getSize().x, window.getView().getSize().y));
                                                                 ^~~~~~~~~~~~~~
                                            ../ODFAEG/src/odfaeg/Graphics/glCheck.h:44:41: note: in definition of macro 'glCheck'
                                                             #define glCheck(call) ((call), odfaeg::graphic::priv::glCheckError(__FILE__, __LINE__))
                                                                                     ^~~~
                                            ../ODFAEG/src/odfaeg/Graphics/perPixelLinkedListRenderComponent.cpp:33:21: error: 'glBindImageTexture' was not declared in this scope
                                                         glCheck(glBindImageTexture(0, headPtrTex, 0, GL_FALSE, 0, GL_READ_WRITE, GL_R32UI));
                                                                 ^~~~~~~~~~~~~~~~~~
                                            ../ODFAEG/src/odfaeg/Graphics/glCheck.h:44:41: note: in definition of macro 'glCheck'
                                                             #define glCheck(call) ((call), odfaeg::graphic::priv::glCheckError(__FILE__, __LINE__))
                                                                                     ^~~~
                                            ../ODFAEG/src/odfaeg/Graphics/perPixelLinkedListRenderComponent.cpp:33:21: note: suggested alternative: 'glBindImageTextureEXT'
                                                         glCheck(glBindImageTexture(0, headPtrTex, 0, GL_FALSE, 0, GL_READ_WRITE, GL_R32UI));
                                                                 ^~~~~~~~~~~~~~~~~~
                                            ../ODFAEG/src/odfaeg/Graphics/glCheck.h:44:41: note: in definition of macro 'glCheck'
                                                             #define glCheck(call) ((call), odfaeg::graphic::priv::glCheckError(__FILE__, __LINE__))
                                                                                     ^~~~
                                            ../ODFAEG/src/odfaeg/Graphics/perPixelLinkedListRenderComponent.cpp: In member function 'virtual void odfaeg::graphic::PerPixelLinkedListRenderComponent::clear()':
                                            ../ODFAEG/src/odfaeg/Graphics/perPixelLinkedListRenderComponent.cpp:216:34: error: 'GL_ATOMIC_COUNTER_BUFFER' was not declared in this scope
                                                         glCheck(glBindBuffer(GL_ATOMIC_COUNTER_BUFFER, atomicBuffer));
                                                                              ^~~~~~~~~~~~~~~~~~~~~~~~
                                            ../ODFAEG/src/odfaeg/Graphics/glCheck.h:44:41: note: in definition of macro 'glCheck'
                                                             #define glCheck(call) ((call), odfaeg::graphic::priv::glCheckError(__FILE__, __LINE__))
                                                                                     ^~~~
                                            ../ODFAEG/src/odfaeg/Graphics/perPixelLinkedListRenderComponent.cpp:216:34: note: suggested alternative: 'GL_COPY_WRITE_BUFFER'
                                                         glCheck(glBindBuffer(GL_ATOMIC_COUNTER_BUFFER, atomicBuffer));
                                                                              ^~~~~~~~~~~~~~~~~~~~~~~~
                                            ../ODFAEG/src/odfaeg/Graphics/glCheck.h:44:41: note: in definition of macro 'glCheck'
                                                             #define glCheck(call) ((call), odfaeg::graphic::priv::glCheckError(__FILE__, __LINE__))
                                                                                     ^~~~
                                            ../ODFAEG/src/odfaeg/Graphics/perPixelLinkedListRenderComponent.cpp: In member function 'virtual void odfaeg::graphic::PerPixelLinkedListRenderComponent::drawNextFrame()':
                                            ../ODFAEG/src/odfaeg/Graphics/perPixelLinkedListRenderComponent.cpp:244:37: error: 'GL_SHADER_STORAGE_BARRIER_BIT' was not declared in this scope
                                                         glCheck(glMemoryBarrier(GL_SHADER_STORAGE_BARRIER_BIT));
                                                                                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                                            ../ODFAEG/src/odfaeg/Graphics/glCheck.h:44:41: note: in definition of macro 'glCheck'
                                                             #define glCheck(call) ((call), odfaeg::graphic::priv::glCheckError(__FILE__, __LINE__))
                                                                                     ^~~~
                                            ../ODFAEG/src/odfaeg/Graphics/perPixelLinkedListRenderComponent.cpp:244:37: note: suggested alternative: 'GL_BUFFER_UPDATE_BARRIER_BIT_EXT'
                                                         glCheck(glMemoryBarrier(GL_SHADER_STORAGE_BARRIER_BIT));
                                                                                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                                            ../ODFAEG/src/odfaeg/Graphics/glCheck.h:44:41: note: in definition of macro 'glCheck'
                                                             #define glCheck(call) ((call), odfaeg::graphic::priv::glCheckError(__FILE__, __LINE__))
                                                                                     ^~~~
                                            ../ODFAEG/src/odfaeg/Graphics/perPixelLinkedListRenderComponent.cpp:244:21: error: 'glMemoryBarrier' was not declared in this scope
                                                         glCheck(glMemoryBarrier(GL_SHADER_STORAGE_BARRIER_BIT));
                                                                 ^~~~~~~~~~~~~~~
                                            ../ODFAEG/src/odfaeg/Graphics/glCheck.h:44:41: note: in definition of macro 'glCheck'
                                                             #define glCheck(call) ((call), odfaeg::graphic::priv::glCheckError(__FILE__, __LINE__))
                                                                                     ^~~~
                                            ../ODFAEG/src/odfaeg/Graphics/perPixelLinkedListRenderComponent.cpp:244:21: note: suggested alternative: 'MemoryBarrier'
                                                         glCheck(glMemoryBarrier(GL_SHADER_STORAGE_BARRIER_BIT));
                                                                 ^~~~~~~~~~~~~~~
                                            ../ODFAEG/src/odfaeg/Graphics/glCheck.h:44:41: note: in definition of macro 'glCheck'
                                                             #define glCheck(call) ((call), odfaeg::graphic::priv::glCheckError(__FILE__, __LINE__))
                                                                                     ^~~~
                                            --Stop Build--
                                             --- End with 40 errors --- 15.85 sec



                                            Elles sont ou ces extensions, j'ai une nvidia gforce 1660.

                                            GlView me dit que toutes ces extensions sont supportées.

                                            J'ai un vieux fichier gl.h comment le remplacer par un plus récent ?
                                            Et ou il se trouve dans window ?

                                            Bon j'ai téléchargé la dernière version de glew apparemment c'était ça mais comme je ne sais pas ou je dois remplacé le fichier j'ai fais ça :

                                            #include "ExtLib/GLEW/glew-2.0.0/include/GL/glew.h"

                                            Pourquoi il me met cette erreur là 

                                                                         ^~~~~~~~~~~
                                            ../ODFAEG/src/odfaeg/Graphics/vertexArray.cpp: In member function 'odfaeg::physic::BoundingBox odfaeg::graphic::VertexArray::getBounds()':
                                            ../ODFAEG/src/odfaeg/Graphics/vertexArray.cpp:366:28: error: expected unqualified-id before '=' token
                                                             float near = m_vertices[0].position.z;
                                                                        ^
                                            ../ODFAEG/src/odfaeg/Graphics/vertexArray.cpp:367:27: error: expected unqualified-id before '=' token
                                                             float far = m_vertices[0].position.z;
                                                                       ^
                                            ../ODFAEG/src/odfaeg/Graphics/vertexArray.cpp:387:41: error: expected primary-expression before ')' token
                                                                 if (position.z < far)
                                                                                     ^
                                            ../ODFAEG/src/odfaeg/Graphics/vertexArray.cpp:388:29: error: expected primary-expression before '=' token
                                                                     far = position.z;
                                                                         ^
                                            ../ODFAEG/src/odfaeg/Graphics/vertexArray.cpp:389:47: error: expected primary-expression before ')' token
                                                                 else if (position.z > near)
                                                                                           ^
                                            ../ODFAEG/src/odfaeg/Graphics/vertexArray.cpp:390:30: error: expected primary-expression before '=' token
                                                                     near = position.z;
                                                                          ^
                                            ../ODFAEG/src/odfaeg/Graphics/vertexArray.cpp:394:43: error: expected primary-expression before '(' token
                                                             return physic::BoundingBox(left, top, near, right - left, bottom - top, far - near);
                                                                                       ^
                                            ../ODFAEG/src/odfaeg/Graphics/vertexArray.cpp:394:59: error: expected primary-expression before ',' token
                                                             return physic::BoundingBox(left, top, near, right - left, bottom - top, far - near);
                                                                                                       ^
                                            ../ODFAEG/src/odfaeg/Graphics/vertexArray.cpp:394:99: error: expected primary-expression before ')' token
                                                             return physic::BoundingBox(left, top, near, right - left, bottom - top, far - near);



                                            -
                                            Edité par OmbreNoire 29 janvier 2020 à 0:08:47

                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                              29 janvier 2020 à 14:12:03

                                              near et far sont des mots clé "déjà" utilisé. Change les noms.
                                              • Partager sur Facebook
                                              • Partager sur Twitter

                                              GZE, un moteur multiplateforme, adapté pour de la 2D, 3D et création de logiciels.

                                                29 janvier 2020 à 14:46:41

                                                Salut MOUSE_MOVED est aussi un mot clé déjà utilisé ?

                                                ../ODFAEG/src/odfaeg/Graphics/GUI/passwordField.cpp:18:48: error: expected unqualified-id before numeric constant
                                                PasswordField::PasswordField(math::Vec3f position, math::Vec3f size, const Font* font, std::string t, RenderWindow& rw) :
                                                                LightComponent(rw, position, size, math::Vec3f(0, 0, 0)) {
                                                                tmp_text = "";
                                                                id_text = t;
                                                                background = sf::Color::White;
                                                                text.setFont(*font);
                                                                text.setString(t);
                                                                text.setColor(sf::Color::Black);
                                                                text.setPosition(position);
                                                                text.setSize(size);
                                                                rect = RectangleShape(size);
                                                                /*rect.setOutlineThickness(5.f);
                                                                rect.setOutlineColor(sf::Color::Black);*/
                                                                core::Action a2 (core::Action::MOUSE_MOVED);
                                                                core::Command cmd2(a2, core::FastDelegate<bool>(&PasswordField::isMouseInTextArea, this), core::FastDelegate<void>(&PasswordField::gaignedFocus, this));
                                                                core::Command cmd3(a2, core::FastDelegate<bool>(&PasswordField::isMouseOutTextArea, this), core::FastDelegate<void>(&PasswordField::lostFocus, this));
                                                                getListener().connect("CGFOCUS"+t, cmd2);
                                                                getListener().connect("CLFOCUS"+t, cmd3);
                                                                core::Action a3 (core::Action::MOUSE_BUTTON_PRESSED_ONCE, window::IMouse::Left);
                                                                core::Command cmd4(a3, core::FastDelegate<bool>(&PasswordField::isMouseInTextArea, this), core::FastDelegate<void>(&PasswordField::setCursorPos, this));
                                                                getListener().connect("CMOUSECLICKED"+t, cmd4);
                                                                core::Action a4 (core::Action::TEXT_ENTERED);
                                                                core::Command cmd5(a4, core::FastDelegate<bool>(&PasswordField::hasFocus, this), core::FastDelegate<void>(&PasswordField::onTextEntered, this, 'a'));
                                                                getListener().connect("CTEXTENTERED"+t, cmd5);
                                                                currentIndex = 0;
                                                                setSize(text.getSize());
                                                                haveFocus = false;
                                                            }


                                                Ha j'ai vu que tu l'avais changé en MOUSE_MOVED_

                                                Sinon comment on fait pour installer une librairie avec cwc ?

                                                ../ODFAEG/src/odfaeg/Graphics/3D/../../../../include/odfaeg/Graphics/3D/model.hpp:4:10: fatal error: assimp/Importer.hpp: No such file or directory
                                                 #include <assimp/Importer.hpp>

                                                 voici le fichier build

                                                -{vFlag}=
                                                -std=c++14
                                                -DSFML
                                                ;-DODFAEG_SYSTEM_WINDOWS
                                                >
                                                -{vIncl}=
                                                -I ../ 
                                                -I ../ExtLib/SFML-2.5.1/include/
                                                -I ../ExtLib/SDL2/include/
                                                -I ../ODFAEG/extlibs/headers/libsndfile/windows/
                                                -I ../ODFAEG/extlibs/headers/OPENSSL/
                                                -I ../ODFAEG/include/
                                                -I ../ODFAEG/extlibs/headers/
                                                -I ../ODFAEG/extlibs/headers/libfreetype/windows/
                                                >
                                                ;Build ODFAEG
                                                -c ../ODFAEG/src/odfaeg/Core/ -o obj/cpp_{_sPlatform}_{_sOpt}/lib/ODFAEG/
                                                -c ../ODFAEG/src/odfaeg/Math/ -o obj/cpp_{_sPlatform}_{_sOpt}/lib/ODFAEG/
                                                -c ../ODFAEG/src/odfaeg/Physics/ -o obj/cpp_{_sPlatform}_{_sOpt}/lib/ODFAEG/
                                                -c ../ODFAEG/src/odfaeg/Graphics/ -o obj/cpp_{_sPlatform}_{_sOpt}/lib/ODFAEG/
                                                -c ../ODFAEG/src/odfaeg/Network/ -o obj/cpp_{_sPlatform}_{_sOpt}/lib/ODFAEG/
                                                -c ../ODFAEG/src/odfaeg/Window/{_sPlatform}/ -o obj/cpp_{_sPlatform}_{_sOpt}/lib/ODFAEG/
                                                -{vIncl}
                                                -{vFlag}
                                                >
                                                ;Build Main Example
                                                ;-c ../HelloWorld/ -o obj/cpp_{_sPlatform}_{_sOpt}/lib/HelloWorld/
                                                ;-{vIncl}
                                                ;-{vFlag}
                                                >
                                                ;Generate executable
                                                -o obj/cpp_{_sPlatform}_{_sOpt}/ -#To _out/{_sPlatform}_{_sOpt}/App.*
                                                >
                                                -#Run

                                                Pourquoi générer un exécutable ? C'est une librairie il faut générer des .a et des .dll

                                                Et il va les installer ou ?

                                                Ca compile enfin mais j'ai pleins de undefined references :

                                                obj/cpp_Windows_O2/lib/ODFAEG/aes.o:aes.cpp:(.text$_ZN6odfaeg7network7AES_ENC12ossl_encryptEPKhjRj+0x27): undefined reference to `EVP_aes_256_ecb'
                                                obj/cpp_Windows_O2/lib/ODFAEG/aes.o:aes.cpp:(.text$_ZN6odfaeg7network7AES_ENC12ossl_encryptEPKhjRj+0x49): undefined reference to `EVP_EncryptInit_ex'
                                                obj/cpp_Windows_O2/lib/ODFAEG/aes.o:aes.cpp:(.text$_ZN6odfaeg7network7AES_ENC12ossl_encryptEPKhjRj+0x77): undefined reference to `EVP_EncryptUpdate'
                                                obj/cpp_Windows_O2/lib/ODFAEG/aes.o:aes.cpp:(.text$_ZN6odfaeg7network7AES_ENC12ossl_encryptEPKhjRj+0x98): undefined reference to `EVP_EncryptFinal_ex'
                                                obj/cpp_Windows_O2/lib/ODFAEG/aes.o:aes.cpp:(.text$_ZN6odfaeg7network7AES_ENC12ossl_decryptEPKhjRj+0x24): undefined reference to `EVP_aes_256_ecb'
                                                obj/cpp_Windows_O2/lib/ODFAEG/aes.o:aes.cpp:(.text$_ZN6odfaeg7network7AES_ENC12ossl_decryptEPKhjRj+0x46): undefined reference to `EVP_DecryptInit_ex'
                                                obj/cpp_Windows_O2/lib/ODFAEG/aes.o:aes.cpp:(.text$_ZN6odfaeg7network7AES_ENC12ossl_decryptEPKhjRj+0x74): undefined reference to `EVP_DecryptUpdate'
                                                obj/cpp_Windows_O2/lib/ODFAEG/aes.o:aes.cpp:(.text$_ZN6odfaeg7network7AES_ENC12ossl_decryptEPKhjRj+0x95): undefined reference to `EVP_DecryptFinal_ex'
                                                obj/cpp_Windows_O2/lib/ODFAEG/aes.o:aes.cpp:(.text$_ZN6odfaeg7network7AES_ENC12ossl_decryptEPKhjRj+0xd0): undefined reference to `ERR_load_crypto_strings'
                                                obj/cpp_Windows_O2/lib/ODFAEG/aes.o:aes.cpp:(.text$_ZN6odfaeg7network7AES_ENC12ossl_decryptEPKhjRj+0xd5): undefined reference to `ERR_get_error'
                                                obj/cpp_Windows_O2/lib/ODFAEG/aes.o:aes.cpp:(.text$_ZN6odfaeg7network7AES_ENC12ossl_decryptEPKhjRj+0xe1): undefined reference to `ERR_error_string'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader12setParameterERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE+0x13): undefined reference to `_imp____glewGetUniformLocation'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZNK6odfaeg7graphic6Shader12bindTexturesEv+0x31): undefined reference to `_imp____glewUniform1i'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZNK6odfaeg7graphic6Shader12bindTexturesEv+0x53): undefined reference to `_imp____glewActiveTexture'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZNK6odfaeg7graphic6Shader12bindTexturesEv+0x85): undefined reference to `_imp___ZN6odfaeg7graphic7Texture4bindEPKS1_NS1_14CoordinateTypeE'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZNK6odfaeg7graphic6Shader12bindTexturesEv+0xb5): undefined reference to `_imp____glewUniform1iARB'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZNK6odfaeg7graphic6Shader12bindTexturesEv+0xd7): undefined reference to `_imp____glewActiveTextureARB'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZNK6odfaeg7graphic6Shader12bindTexturesEv+0x113): undefined reference to `_imp____glewActiveTextureARB'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZNK6odfaeg7graphic6Shader12bindTexturesEv+0x141): undefined reference to `_imp____glewActiveTexture'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader4bindEPKS1_+0x2e): undefined reference to `_imp____glewUseProgram'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader4bindEPKS1_+0x61): undefined reference to `_imp____glewUniform1i'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader4bindEPKS1_+0x96): undefined reference to `_imp____glewUseProgramObjectARB'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader4bindEPKS1_+0xca): undefined reference to `_imp____glewUseProgram'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader4bindEPKS1_+0xf4): undefined reference to `_imp____glewUseProgramObjectARB'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader4bindEPKS1_+0x127): undefined reference to `_imp____glewUniform1iARB'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader15getVersionMajorEv+0xb): undefined reference to `glGetString@4'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader15getVersionMinorEv+0xb): undefined reference to `glGetString@4'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6ShaderC2Ev+0x3e): undefined reference to `_imp___ZN2sf10GlResourceC2Ev'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6ShaderC2Ev+0xbb): undefined reference to `glGetString@4'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6ShaderC2Ev+0xe6): undefined reference to `glGetString@4'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6ShaderC2Ev+0x151): undefined reference to `_imp___ZN2sf10GlResourceD2Ev'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6ShaderD2Ev+0x3f): undefined reference to `_imp____glewDeleteProgram'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6ShaderD2Ev+0x9d): undefined reference to `_imp___ZN2sf10GlResourceD2Ev'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6ShaderD2Ev+0xb4): undefined reference to `_imp____glewDeleteObjectARB'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader7compileEPKcS3_+0x83): undefined reference to `_imp____glewDeleteProgram'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader7compileEPKcS3_+0x120): undefined reference to `_imp____glewCreateProgramObjectARB'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader7compileEPKcS3_+0x161): undefined reference to `_imp____glewCreateShader'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader7compileEPKcS3_+0x19e): undefined reference to `_imp____glewShaderSource'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader7compileEPKcS3_+0x1c5): undefined reference to `_imp____glewCompileShader'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader7compileEPKcS3_+0x1fe): undefined reference to `_imp____glewGetShaderiv'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader7compileEPKcS3_+0x23f): undefined reference to `_imp____glewAttachShader'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader7compileEPKcS3_+0x272): undefined reference to `_imp____glewDeleteShader'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader7compileEPKcS3_+0x2a9): undefined reference to `_imp____glewCreateShaderObjectARB'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader7compileEPKcS3_+0x2cf): undefined reference to `_imp____glewShaderSourceARB'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader7compileEPKcS3_+0x30f): undefined reference to `_imp____glewCompileShaderARB'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader7compileEPKcS3_+0x348): undefined reference to `_imp____glewGetObjectParameterivARB'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader7compileEPKcS3_+0x389): undefined reference to `_imp____glewAttachObjectARB'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader7compileEPKcS3_+0x3bc): undefined reference to `_imp____glewDeleteObjectARB'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader7compileEPKcS3_+0x3f0): undefined reference to `_imp____glewLinkProgramARB'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader7compileEPKcS3_+0x43a): undefined reference to `_imp____glewGetObjectParameterivARB'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader7compileEPKcS3_+0x470): undefined reference to `glFlush@0'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader7compileEPKcS3_+0x4b1): undefined reference to `_imp____glewCreateShaderObjectARB'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader7compileEPKcS3_+0x4ee): undefined reference to `_imp____glewShaderSourceARB'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader7compileEPKcS3_+0x515): undefined reference to `_imp____glewCompileShaderARB'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader7compileEPKcS3_+0x54e): undefined reference to `_imp____glewGetObjectParameterivARB'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader7compileEPKcS3_+0x58f): undefined reference to `_imp____glewAttachObjectARB'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader7compileEPKcS3_+0x5c2): undefined reference to `_imp____glewDeleteObjectARB'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader7compileEPKcS3_+0x5fe): undefined reference to `_imp____glewLinkProgram'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader7compileEPKcS3_+0x648): undefined reference to `_imp____glewGetProgramiv'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader7compileEPKcS3_+0x683): undefined reference to `_imp____glewGetProgramiv'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader7compileEPKcS3_+0x719): undefined reference to `_imp____glewGetProgramInfoLog'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader7compileEPKcS3_+0x744): undefined reference to `_imp___ZN2sf3errEv'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader7compileEPKcS3_+0x7c5): undefined reference to `_imp____glewDeleteProgram'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader7compileEPKcS3_+0x81e): undefined reference to `_imp____glewCreateShader'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader7compileEPKcS3_+0x844): undefined reference to `_imp____glewShaderSource'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader7compileEPKcS3_+0x884): undefined reference to `_imp____glewCompileShader'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader7compileEPKcS3_+0x8bd): undefined reference to `_imp____glewGetShaderiv'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader7compileEPKcS3_+0x8fe): undefined reference to `_imp____glewAttachShader'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader7compileEPKcS3_+0x931): undefined reference to `_imp____glewDeleteShader'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader7compileEPKcS3_+0x964): undefined reference to `_imp____glewDeleteObjectARB'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader7compileEPKcS3_+0x993): undefined reference to `_imp____glewCreateProgram'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader7compileEPKcS3_+0x9d6): undefined reference to `_imp____glewGetInfoLogARB'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader7compileEPKcS3_+0x9f5): undefined reference to `_imp___ZN2sf3errEv'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader7compileEPKcS3_+0xb1f): undefined reference to `_imp____glewDeleteObjectARB'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader7compileEPKcS3_+0xb44): undefined reference to `_imp____glewDeleteObjectARB'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader7compileEPKcS3_+0xba6): undefined reference to `_imp____glewGetInfoLogARB'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader7compileEPKcS3_+0xbc5): undefined reference to `_imp___ZN2sf3errEv'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader7compileEPKcS3_+0xcf1): undefined reference to `_imp____glewDeleteObjectARB'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader7compileEPKcS3_+0xd34): undefined reference to `_imp____glewGetInfoLogARB'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader7compileEPKcS3_+0xd53): undefined reference to `_imp___ZN2sf3errEv'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader7compileEPKcS3_+0xe7d): undefined reference to `_imp____glewDeleteObjectARB'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader7compileEPKcS3_+0xea2): undefined reference to `_imp____glewDeleteObjectARB'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader7compileEPKcS3_+0x10ae): undefined reference to `_imp____glewGetShaderiv'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader7compileEPKcS3_+0x1120): undefined reference to `_imp____glewGetShaderInfoLog'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader7compileEPKcS3_+0x113f): undefined reference to `_imp___ZN2sf3errEv'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader7compileEPKcS3_+0x1241): undefined reference to `_imp____glewDeleteShader'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader7compileEPKcS3_+0x126a): undefined reference to `_imp____glewDeleteProgram'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader7compileEPKcS3_+0x130e): undefined reference to `_imp____glewGetShaderiv'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader7compileEPKcS3_+0x1380): undefined reference to `_imp____glewGetShaderInfoLog'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader7compileEPKcS3_+0x139f): undefined reference to `_imp___ZN2sf3errEv'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader7compileEPKcS3_+0x149b): undefined reference to `_imp____glewDeleteShader'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader7compileEPKcS3_+0x14c4): undefined reference to `_imp____glewDeleteProgram'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader12loadFromFileERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS1_4TypeE+0xd2): undefined reference to `_imp___ZN2sf3errEv'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader12loadFromFileERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES9_+0xe7): undefined reference to `_imp___ZN2sf3errEv'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader12loadFromFileERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES9_+0x192): undefined reference to `_imp___ZN2sf3errEv'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader14loadFromStreamERN2sf11InputStreamENS1_4TypeE+0xd2): undefined reference to `_imp___ZN2sf3errEv'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader14loadFromStreamERN2sf11InputStreamES4_+0xe7): undefined reference to `_imp___ZN2sf3errEv'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader14loadFromStreamERN2sf11InputStreamES4_+0x152): more undefined references to `_imp___ZN2sf3errEv' follow
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader23getVertexAttribLocationERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE+0x90): undefined reference to `_imp____glewGetAttribLocation'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader23getVertexAttribLocationERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE+0xa8): undefined reference to `_imp____glewGetAttribLocationARB'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader23getVertexAttribLocationERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE+0x139): undefined reference to `_imp___ZN2sf3errEv'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader13bindAttributeEiRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE+0x27): undefined reference to `glGetIntegerv@8'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader13bindAttributeEiRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE+0x59): undefined reference to `_imp____glewBindAttribLocationARB'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader13bindAttributeEiRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE+0xb5): undefined reference to `_imp____glewBindAttribLocation'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader13bindAttributeEiRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE+0xe2): undefined reference to `_imp___ZN2sf3errEv'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader16getParamLocationERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE+0x90): undefined reference to `_imp____glewGetUniformLocation'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader16getParamLocationERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE+0xa8): undefined reference to `_imp____glewGetUniformLocationARB'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader16getParamLocationERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE+0x139): undefined reference to `_imp___ZN2sf3errEv'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader12setParameterERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEj+0x20): undefined reference to `_imp____glewGetHandleARB'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader12setParameterERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEj+0x2f): undefined reference to `_imp____glewUseProgramObjectARB'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader12setParameterERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEj+0x74): undefined reference to `_imp____glewUniform1ui'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader12setParameterERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEj+0xd1): undefined reference to `_imp____glewUseProgram'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader12setParameterERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEj+0xfe): undefined reference to `_imp____glewGetUniformLocation'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader12setParameterERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEj+0x114): undefined reference to `_imp____glewUniform1ui'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader12setParameterERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEf+0x20): undefined reference to `_imp____glewGetHandleARB'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader12setParameterERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEf+0x2f): undefined reference to `_imp____glewUseProgramObjectARB'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader12setParameterERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEf+0x74): undefined reference to `_imp____glewUniform1fARB'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader12setParameterERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEf+0xd1): undefined reference to `_imp____glewUseProgram'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader12setParameterERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEf+0xfe): undefined reference to `_imp____glewGetUniformLocation'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader12setParameterERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEf+0x114): undefined reference to `_imp____glewUniform1f'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader12setParameterERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEff+0x20): undefined reference to `_imp____glewGetHandleARB'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader12setParameterERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEff+0x2f): undefined reference to `_imp____glewUseProgramObjectARB'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader12setParameterERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEff+0x74): undefined reference to `_imp____glewUniform2fARB'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader12setParameterERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEff+0xd3): undefined reference to `_imp____glewUseProgram'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader12setParameterERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEff+0x100): undefined reference to `_imp____glewGetUniformLocation'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader12setParameterERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEff+0x116): undefined reference to `_imp____glewUniform2f'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader12setParameterERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEfff+0x20): undefined reference to `_imp____glewGetHandleARB'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader12setParameterERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEfff+0x2f): undefined reference to `_imp____glewUseProgramObjectARB'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader12setParameterERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEfff+0x74): undefined reference to `_imp____glewUniform3fARB'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader12setParameterERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEfff+0xe1): undefined reference to `_imp____glewUseProgram'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader12setParameterERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEfff+0x10e): undefined reference to `_imp____glewGetUniformLocation'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader12setParameterERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEfff+0x124): undefined reference to `_imp____glewUniform3f'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader12setParameterERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEffff+0x20): undefined reference to `_imp____glewGetHandleARB'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader12setParameterERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEffff+0x2f): undefined reference to `_imp____glewUseProgramObjectARB'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader12setParameterERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEffff+0x74): undefined reference to `_imp____glewUniform4fARB'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader12setParameterERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEffff+0xe3): undefined reference to `_imp____glewUseProgram'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader12setParameterERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEffff+0x110): undefined reference to `_imp____glewGetUniformLocation'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader12setParameterERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEffff+0x126): undefined reference to `_imp____glewUniform4f'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader12setParameterERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_4math8Matrix4fE+0x2f): undefined reference to `_imp____glewUseProgram'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader12setParameterERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_4math8Matrix4fE+0x68): undefined reference to `_imp____glewUniformMatrix4fv'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader12setParameterERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_4math8Matrix4fE+0x7d): undefined reference to `_imp___ZN6odfaeg4math8Matrix4f10toGlMatrixEv'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader12setParameterERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_4math8Matrix4fE+0xe1): undefined reference to `_imp____glewGetHandleARB'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader12setParameterERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_4math8Matrix4fE+0xf0): undefined reference to `_imp____glewUseProgramObjectARB'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader12setParameterERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_4math8Matrix4fE+0x16f): undefined reference to `_imp___ZN6odfaeg4math8Matrix4f10toGlMatrixEv'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader12setParameterERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_4math8Matrix4fE+0x174): undefined reference to `_imp____glewUniformMatrix4fvARB'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader12setParameterERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIPNS0_15TransformMatrixESaISC_EE+0x5b): undefined reference to `_imp____glewGetHandleARB'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader12setParameterERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIPNS0_15TransformMatrixESaISC_EE+0x76): undefined reference to `_imp____glewUseProgramObjectARB'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader12setParameterERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIPNS0_15TransformMatrixESaISC_EE+0x11e): undefined reference to `_imp___ZN6odfaeg7graphic15TransformMatrix9getMatrixEv'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader12setParameterERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIPNS0_15TransformMatrixESaISC_EE+0x133): undefined reference to `_imp___ZN6odfaeg4math8Matrix4f9transposeEv'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader12setParameterERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIPNS0_15TransformMatrixESaISC_EE+0x148): undefined reference to `_imp___ZN6odfaeg4math8Matrix4f10toGlMatrixEv'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader12setParameterERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIPNS0_15TransformMatrixESaISC_EE+0x208): undefined reference to `_imp____glewUniformMatrix4fvARB'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader12setParameterERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIPNS0_15TransformMatrixESaISC_EE+0x24d): undefined reference to `_imp____glewUseProgramObjectARB'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader12setParameterERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS0_7TextureE+0x14b): undefined reference to `glGetIntegerv@8'
                                                obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader12setParameterERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS0_7TextureE+0x22f): undefined reference to `_imp___ZN2sf3errEv'
                                                obj/cpp_Windows_O2/lib/ODFAEG/application.o:application.cpp:(.text$_ZN6odfaeg4core11ApplicationD1Ev[__ZN6odfaeg4core11ApplicationD1Ev]+0x136): undefined reference to `_imp___ZN6odfaeg7graphic22RenderComponentManagerD1Ev'
                                                obj/cpp_Windows_O2/lib/ODFAEG/application.o:application.cpp:(.text$_ZN6odfaeg4core11ApplicationD0Ev[__ZN6odfaeg4core11ApplicationD0Ev]+0x136): undefined reference to `_imp___ZN6odfaeg7graphic22RenderComponentManagerD1Ev'
                                                obj/cpp_Windows_O2/lib/ODFAEG/application.o:application.cpp:(.text.startup._GLOBAL__sub_I__ZN6odfaeg4core11Application3appE+0xad): undefined reference to `_imp___ZN2sf5ClockC1Ev'
                                                obj/cpp_Windows_O2/lib/ODFAEG/command.o:command.cpp:(.text$_ZN6odfaeg4core7CommandC2ENS0_6ActionENS0_12FastDelegateIvEE+0x9b): undefined reference to `_imp___ZN6odfaeg4core6ActionC1ERKS1_'
                                                obj/cpp_Windows_O2/lib/ODFAEG/command.o:command.cpp:(.text$_ZN6odfaeg4core7CommandC2ENS0_6ActionENS0_12FastDelegateIbEENS3_IvEE+0x9b): undefined reference to `_imp___ZN6odfaeg4core6ActionC1ERKS1_'
                                                obj/cpp_Windows_O2/lib/ODFAEG/command.o:command.cpp:(.text$_ZN6odfaeg4core7CommandC2ERKS1_+0xb2): undefined reference to `_imp___ZN6odfaeg4core6ActionC1ERKS1_'
                                                obj/cpp_Windows_O2/lib/ODFAEG/command.o:command.cpp:(.text$_ZN6odfaeg4core7Command11isTriggeredEv+0x68): undefined reference to `_imp___ZN6odfaeg4core6Action11isTriggeredEv'
                                                obj/cpp_Windows_O2/lib/ODFAEG/command.o:command.cpp:(.text$_ZN6odfaeg4core7Command11isTriggeredEv+0x7b): undefined reference to `_imp___ZN6odfaeg4core6Action11isTriggeredEv'
                                                obj/cpp_Windows_O2/lib/ODFAEG/command.o:command.cpp:(.text$_ZN6odfaeg4core7Command19containsBufferEventERNS_6window6IEventE+0x8): undefined reference to `_imp___ZN6odfaeg4core6Action13containsEventERNS_6window6IEventE'
                                                obj/cpp_Windows_O2/lib/ODFAEG/command.o:command.cpp:(.text$_ZN6odfaeg4core7CommandaSERKS1_+0x6a): undefined reference to `_imp___ZN6odfaeg4core6ActionC1ERKS1_'
                                                obj/cpp_Windows_O2/lib/ODFAEG/odfaeg/Math/ray.o:ray.cpp:(.text$_ZN6odfaeg4math3RayC2ENS0_5Vec3fES2_+0x4f): undefined reference to `_imp___ZN6odfaeg4math5Vec3fmiERKS1_'
                                                obj/cpp_Windows_O2/lib/ODFAEG/odfaeg/Math/ray.o:ray.cpp:(.text$_ZN6odfaeg4math3Ray15intersectsWhereERS1_+0x56): undefined reference to `_imp___ZN6odfaeg4math5Vec3fmiERKS1_'
                                                obj/cpp_Windows_O2/lib/ODFAEG/odfaeg/Math/ray.o:ray.cpp:(.text$_ZN6odfaeg4math3Ray15intersectsWhereERS1_+0x5c): undefined reference to `_imp___ZNK6odfaeg4math5Vec3f5crossERKS1_'
                                                
                                                C:/Users/Laurent/Downloads/Cwc-0.0.95.7/Cwc-0.0.95.7/Toolchain/VLianceTool/LibRT/LibRT-8.0.3/bin/../lib/gcc/i686-w64-mingw32/8.1.0/../../../../i686-w64-mingw32/lib/../lib/libmingw32.a(lib32_libmingw32_a-crt0_c.o):crt0_c.c:(.text.startup+0x39): undefined reference to `WinMain@16'
                                                collect2.exe: error: ld returned 1 exit status


                                                PS : j'ai du faire un énorme tri car il y avait plein de fichiers et de code que je n'utilise plus.

                                                PS 2 ; j'ai posté le code ici (branche windows) :

                                                https://github.com/LaurentDuroisin7601/ODFAEG/tree/windows

                                                -
                                                Edité par OmbreNoire 29 janvier 2020 à 15:59:55

                                                • Partager sur Facebook
                                                • Partager sur Twitter
                                                  29 janvier 2020 à 22:26:07

                                                  Super, ça avance!
                                                  J'ai pas testé, mais sûrement avec quelque chose du genre:

                                                  ;Build Demo
                                                  -c ../Demos/ODFAEG-DEMO/ -o obj/cpp_{_sPlatform}_{_sOpt}/Demo/
                                                  -{vIncl}
                                                  -{vFlag}
                                                  >
                                                  ;Copy Assets
                                                  -#Copy ../Demos/ODFAEG-DEMO/fonts/  _out/{_sPlatform}_{_sOpt}/fonts/
                                                  >
                                                  -#Copy ../Demos/ODFAEG-DEMO/sounds/  _out/{_sPlatform}_{_sOpt}/sounds/
                                                  >
                                                  -#Copy ../Demos/ODFAEG-DEMO/tilesets/  _out/{_sPlatform}_{_sOpt}/tilesets/
                                                  >
                                                  ;Copy DLL
                                                  -#Copy ../ODFAEG/extlibs/bin/x86/  _out/{_sPlatform}_{_sOpt}/
                                                  >
                                                  ;Generate executable
                                                  -o obj/cpp_{_sPlatform}_{_sOpt}/ -#To _out/{_sPlatform}_{_sOpt}/App.*
                                                  -L ../ODFAEG/extlibs/bin/x86/
                                                  -L ../ODFAEG/extlibs/libs-mingw/x86/
                                                  -L ../ExtLib/SFML-2.5.1/lib/
                                                  
                                                  -lglew -lsfml-graphics
                                                  -luser32  -lgdi32 -lopengl32 
                                                  
                                                  >
                                                  -#Run

                                                  Edit: J'ai pas répondu à toutes tes questions:

                                                  OmbreNoire a écrit:

                                                  Salut MOUSE_MOVED est aussi un mot clé déjà utilisé ?


                                                  Oui je l'ai renommé, il aimait pas...

                                                  OmbreNoire a écrit:

                                                  Pourquoi générer un exécutable ? C'est une librairie il faut générer des .a et des .dll

                                                  Et il va les installer ou ?

                                                  Je reste mitigé sur la génération de précompilé, l'utilisateur perd en quelque sorte la possibilité d'utilisé les options de compilation souhaité, le compilateur voulu, les optimisation voulu, etc.

                                                  Puisqu'avec Cwc, tout est configuré automatiquement, c'est pratiquement plus nécessaire.

                                                  Néanmoins, il y a quand même certains avantages, alors oui c'est possible.

                                                  Voici les commandes:
                                                  >
                                                  ;Generate Dynamic Lib
                                                  -o obj/cpp_{_sPlatform}_{_sOpt}/lib/ -#To Lib/{_sPlatform}_{_sOpt}/YourLib.dll
                                                  >
                                                  ;Generate Static Lib
                                                  -o obj/cpp_{_sPlatform}_{_sOpt}/lib/ -#To Lib/{_sPlatform}_{_sOpt}/YourLib.a
                                                  >
                                                  ;Generate executable
                                                  ...


                                                  "Lib/{_sPlatform}_{_sOpt}/YourLib.a" qui donne un fichier à cette endroit:
                                                  "ODFAEG/cwc/Lib/Windows_Debug/YourLib.a"

                                                  Ou bien de façon plus générique, puisque l'on peut compiler sur Web avec Emsc (WebRT) et éventuellement Linux, donc un ".dll" ou un ".so"

                                                  Faire les fichiers:


                                                  Make_For_Web (Emscripten).cwMake

                                                  -{sDynamic}="so"
                                                  >
                                                  -#Run Build.cwc -{_wToolchain}= "VLianceTool/WebRT"
                                                  
                                                  Make_For_Windows [Debug].cwMake
                                                  -{sDynamic}="dll"
                                                  >
                                                  -#Run Build.cwc -{_wToolchain}= "VLianceTool/LibRT"
                                                  Build.cwc
                                                  ;Generate Dynamic Lib
                                                  -o obj/cpp_{_sPlatform}_{_sOpt}/lib/ -#To Lib/{_sPlatform}_{_sOpt}/YourLib.{sDynamic}

                                                  Par Exemple:
                                                  https://github.com/Cwc-Lib/leveldb

                                                  -
                                                  Edité par Maeiky 30 janvier 2020 à 4:37:43

                                                  • Partager sur Facebook
                                                  • Partager sur Twitter

                                                  GZE, un moteur multiplateforme, adapté pour de la 2D, 3D et création de logiciels.

                                                    30 janvier 2020 à 16:19:54

                                                    Ha on est pas obligé de précompiler ?

                                                    Je peux utiliser le framework sans le linké au projet ODFAEGDEMO, Cwc va le configuré automatiquement ?

                                                    Mmm...intéressant il faudrait que je test.

                                                    Bon, j'ai essayé de compilé la démo mais ...

                                                    1112basic_stringIcSt11char_traitsIcESaIcEEENS_6window15ContextSettingsE+0x0): first defined here
                                                    obj/cpp_Windows_O2/lib/ODFAEG/aes.o:aes.cpp:(.text$_ZN6odfaeg7network7AES_ENC12ossl_encryptEPKhjRj+0x27): undefined reference to `EVP_aes_256_ecb'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/aes.o:aes.cpp:(.text$_ZN6odfaeg7network7AES_ENC12ossl_encryptEPKhjRj+0x49): undefined reference to `EVP_EncryptInit_ex'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/aes.o:aes.cpp:(.text$_ZN6odfaeg7network7AES_ENC12ossl_encryptEPKhjRj+0x77): undefined reference to `EVP_EncryptUpdate'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/aes.o:aes.cpp:(.text$_ZN6odfaeg7network7AES_ENC12ossl_encryptEPKhjRj+0x98): undefined reference to `EVP_EncryptFinal_ex'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/aes.o:aes.cpp:(.text$_ZN6odfaeg7network7AES_ENC12ossl_decryptEPKhjRj+0x24): undefined reference to `EVP_aes_256_ecb'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/aes.o:aes.cpp:(.text$_ZN6odfaeg7network7AES_ENC12ossl_decryptEPKhjRj+0x46): undefined reference to `EVP_DecryptInit_ex'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/aes.o:aes.cpp:(.text$_ZN6odfaeg7network7AES_ENC12ossl_decryptEPKhjRj+0x74): undefined reference to `EVP_DecryptUpdate'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/aes.o:aes.cpp:(.text$_ZN6odfaeg7network7AES_ENC12ossl_decryptEPKhjRj+0x95): undefined reference to `EVP_DecryptFinal_ex'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/aes.o:aes.cpp:(.text$_ZN6odfaeg7network7AES_ENC12ossl_decryptEPKhjRj+0xd0): undefined reference to `ERR_load_crypto_strings'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/aes.o:aes.cpp:(.text$_ZN6odfaeg7network7AES_ENC12ossl_decryptEPKhjRj+0xd5): undefined reference to `ERR_get_error'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/aes.o:aes.cpp:(.text$_ZN6odfaeg7network7AES_ENC12ossl_decryptEPKhjRj+0xe1): undefined reference to `ERR_error_string'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader12setParameterERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE+0x13): undefined reference to `_imp____glewGetUniformLocation'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZNK6odfaeg7graphic6Shader12bindTexturesEv+0x31): undefined reference to `_imp____glewUniform1i'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZNK6odfaeg7graphic6Shader12bindTexturesEv+0x53): undefined reference to `_imp____glewActiveTexture'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZNK6odfaeg7graphic6Shader12bindTexturesEv+0x85): undefined reference to `_imp___ZN6odfaeg7graphic7Texture4bindEPKS1_NS1_14CoordinateTypeE'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZNK6odfaeg7graphic6Shader12bindTexturesEv+0xb5): undefined reference to `_imp____glewUniform1iARB'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZNK6odfaeg7graphic6Shader12bindTexturesEv+0xd7): undefined reference to `_imp____glewActiveTextureARB'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZNK6odfaeg7graphic6Shader12bindTexturesEv+0x113): undefined reference to `_imp____glewActiveTextureARB'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZNK6odfaeg7graphic6Shader12bindTexturesEv+0x141): undefined reference to `_imp____glewActiveTexture'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader4bindEPKS1_+0x2e): undefined reference to `_imp____glewUseProgram'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader4bindEPKS1_+0x61): undefined reference to `_imp____glewUniform1i'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader4bindEPKS1_+0x96): undefined reference to `_imp____glewUseProgramObjectARB'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader4bindEPKS1_+0xca): undefined reference to `_imp____glewUseProgram'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader4bindEPKS1_+0xf4): undefined reference to `_imp____glewUseProgramObjectARB'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader4bindEPKS1_+0x127): undefined reference to `_imp____glewUniform1iARB'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader15getVersionMajorEv+0xb): undefined reference to `glGetString@4'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader15getVersionMinorEv+0xb): undefined reference to `glGetString@4'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6ShaderC2Ev+0x3e): undefined reference to `_imp___ZN2sf10GlResourceC2Ev'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6ShaderC2Ev+0xbb): undefined reference to `glGetString@4'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6ShaderC2Ev+0xe6): undefined reference to `glGetString@4'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6ShaderC2Ev+0x151): undefined reference to `_imp___ZN2sf10GlResourceD2Ev'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6ShaderD2Ev+0x3f): undefined reference to `_imp____glewDeleteProgram'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6ShaderD2Ev+0x9d): undefined reference to `_imp___ZN2sf10GlResourceD2Ev'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6ShaderD2Ev+0xb4): undefined reference to `_imp____glewDeleteObjectARB'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader7compileEPKcS3_+0x83): undefined reference to `_imp____glewDeleteProgram'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader7compileEPKcS3_+0x120): undefined reference to `_imp____glewCreateProgramObjectARB'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader7compileEPKcS3_+0x161): undefined reference to `_imp____glewCreateShader'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader7compileEPKcS3_+0x19e): undefined reference to `_imp____glewShaderSource'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader7compileEPKcS3_+0x1c5): undefined reference to `_imp____glewCompileShader'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader7compileEPKcS3_+0x1fe): undefined reference to `_imp____glewGetShaderiv'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader7compileEPKcS3_+0x23f): undefined reference to `_imp____glewAttachShader'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader7compileEPKcS3_+0x272): undefined reference to `_imp____glewDeleteShader'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader7compileEPKcS3_+0x2a9): undefined reference to `_imp____glewCreateShaderObjectARB'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader7compileEPKcS3_+0x2cf): undefined reference to `_imp____glewShaderSourceARB'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader7compileEPKcS3_+0x30f): undefined reference to `_imp____glewCompileShaderARB'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader7compileEPKcS3_+0x348): undefined reference to `_imp____glewGetObjectParameterivARB'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader7compileEPKcS3_+0x389): undefined reference to `_imp____glewAttachObjectARB'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader7compileEPKcS3_+0x3bc): undefined reference to `_imp____glewDeleteObjectARB'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader7compileEPKcS3_+0x3f0): undefined reference to `_imp____glewLinkProgramARB'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader7compileEPKcS3_+0x43a): undefined reference to `_imp____glewGetObjectParameterivARB'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader7compileEPKcS3_+0x470): undefined reference to `glFlush@0'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader7compileEPKcS3_+0x4b1): undefined reference to `_imp____glewCreateShaderObjectARB'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader7compileEPKcS3_+0x4ee): undefined reference to `_imp____glewShaderSourceARB'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader7compileEPKcS3_+0x515): undefined reference to `_imp____glewCompileShaderARB'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader7compileEPKcS3_+0x54e): undefined reference to `_imp____glewGetObjectParameterivARB'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader7compileEPKcS3_+0x58f): undefined reference to `_imp____glewAttachObjectARB'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader7compileEPKcS3_+0x5c2): undefined reference to `_imp____glewDeleteObjectARB'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader7compileEPKcS3_+0x5fe): undefined reference to `_imp____glewLinkProgram'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader7compileEPKcS3_+0x648): undefined reference to `_imp____glewGetProgramiv'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader7compileEPKcS3_+0x683): undefined reference to `_imp____glewGetProgramiv'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader7compileEPKcS3_+0x719): undefined reference to `_imp____glewGetProgramInfoLog'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader7compileEPKcS3_+0x744): undefined reference to `_imp___ZN2sf3errEv'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader7compileEPKcS3_+0x7c5): undefined reference to `_imp____glewDeleteProgram'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader7compileEPKcS3_+0x81e): undefined reference to `_imp____glewCreateShader'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader7compileEPKcS3_+0x844): undefined reference to `_imp____glewShaderSource'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader7compileEPKcS3_+0x884): undefined reference to `_imp____glewCompileShader'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader7compileEPKcS3_+0x8bd): undefined reference to `_imp____glewGetShaderiv'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader7compileEPKcS3_+0x8fe): undefined reference to `_imp____glewAttachShader'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader7compileEPKcS3_+0x931): undefined reference to `_imp____glewDeleteShader'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader7compileEPKcS3_+0x964): undefined reference to `_imp____glewDeleteObjectARB'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader7compileEPKcS3_+0x993): undefined reference to `_imp____glewCreateProgram'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader7compileEPKcS3_+0x9d6): undefined reference to `_imp____glewGetInfoLogARB'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader7compileEPKcS3_+0x9f5): undefined reference to `_imp___ZN2sf3errEv'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader7compileEPKcS3_+0xb1f): undefined reference to `_imp____glewDeleteObjectARB'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader7compileEPKcS3_+0xb44): undefined reference to `_imp____glewDeleteObjectARB'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader7compileEPKcS3_+0xba6): undefined reference to `_imp____glewGetInfoLogARB'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader7compileEPKcS3_+0xbc5): undefined reference to `_imp___ZN2sf3errEv'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader7compileEPKcS3_+0xcf1): undefined reference to `_imp____glewDeleteObjectARB'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader7compileEPKcS3_+0xd34): undefined reference to `_imp____glewGetInfoLogARB'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader7compileEPKcS3_+0xd53): undefined reference to `_imp___ZN2sf3errEv'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader7compileEPKcS3_+0xe7d): undefined reference to `_imp____glewDeleteObjectARB'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader7compileEPKcS3_+0xea2): undefined reference to `_imp____glewDeleteObjectARB'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader7compileEPKcS3_+0x10ae): undefined reference to `_imp____glewGetShaderiv'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader7compileEPKcS3_+0x1120): undefined reference to `_imp____glewGetShaderInfoLog'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader7compileEPKcS3_+0x113f): undefined reference to `_imp___ZN2sf3errEv'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader7compileEPKcS3_+0x1241): undefined reference to `_imp____glewDeleteShader'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader7compileEPKcS3_+0x126a): undefined reference to `_imp____glewDeleteProgram'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader7compileEPKcS3_+0x130e): undefined reference to `_imp____glewGetShaderiv'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader7compileEPKcS3_+0x1380): undefined reference to `_imp____glewGetShaderInfoLog'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader7compileEPKcS3_+0x139f): undefined reference to `_imp___ZN2sf3errEv'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader7compileEPKcS3_+0x149b): undefined reference to `_imp____glewDeleteShader'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader7compileEPKcS3_+0x14c4): undefined reference to `_imp____glewDeleteProgram'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader12loadFromFileERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS1_4TypeE+0xd2): undefined reference to `_imp___ZN2sf3errEv'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader12loadFromFileERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES9_+0xe7): undefined reference to `_imp___ZN2sf3errEv'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader12loadFromFileERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES9_+0x192): undefined reference to `_imp___ZN2sf3errEv'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader14loadFromStreamERN2sf11InputStreamENS1_4TypeE+0xd2): undefined reference to `_imp___ZN2sf3errEv'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader14loadFromStreamERN2sf11InputStreamES4_+0xe7): undefined reference to `_imp___ZN2sf3errEv'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader14loadFromStreamERN2sf11InputStreamES4_+0x152): more undefined references to `_imp___ZN2sf3errEv' follow
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader23getVertexAttribLocationERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE+0x90): undefined reference to `_imp____glewGetAttribLocation'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader23getVertexAttribLocationERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE+0xa8): undefined reference to `_imp____glewGetAttribLocationARB'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader23getVertexAttribLocationERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE+0x139): undefined reference to `_imp___ZN2sf3errEv'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader13bindAttributeEiRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE+0x27): undefined reference to `glGetIntegerv@8'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader13bindAttributeEiRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE+0x59): undefined reference to `_imp____glewBindAttribLocationARB'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader13bindAttributeEiRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE+0xb5): undefined reference to `_imp____glewBindAttribLocation'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader13bindAttributeEiRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE+0xe2): undefined reference to `_imp___ZN2sf3errEv'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader16getParamLocationERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE+0x90): undefined reference to `_imp____glewGetUniformLocation'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader16getParamLocationERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE+0xa8): undefined reference to `_imp____glewGetUniformLocationARB'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader16getParamLocationERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE+0x139): undefined reference to `_imp___ZN2sf3errEv'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader12setParameterERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEj+0x20): undefined reference to `_imp____glewGetHandleARB'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader12setParameterERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEj+0x2f): undefined reference to `_imp____glewUseProgramObjectARB'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader12setParameterERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEj+0x74): undefined reference to `_imp____glewUniform1ui'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader12setParameterERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEj+0xd1): undefined reference to `_imp____glewUseProgram'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader12setParameterERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEj+0xfe): undefined reference to `_imp____glewGetUniformLocation'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader12setParameterERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEj+0x114): undefined reference to `_imp____glewUniform1ui'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader12setParameterERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEf+0x20): undefined reference to `_imp____glewGetHandleARB'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader12setParameterERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEf+0x2f): undefined reference to `_imp____glewUseProgramObjectARB'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader12setParameterERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEf+0x74): undefined reference to `_imp____glewUniform1fARB'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader12setParameterERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEf+0xd1): undefined reference to `_imp____glewUseProgram'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader12setParameterERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEf+0xfe): undefined reference to `_imp____glewGetUniformLocation'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader12setParameterERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEf+0x114): undefined reference to `_imp____glewUniform1f'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader12setParameterERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEff+0x20): undefined reference to `_imp____glewGetHandleARB'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader12setParameterERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEff+0x2f): undefined reference to `_imp____glewUseProgramObjectARB'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader12setParameterERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEff+0x74): undefined reference to `_imp____glewUniform2fARB'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader12setParameterERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEff+0xd3): undefined reference to `_imp____glewUseProgram'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader12setParameterERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEff+0x100): undefined reference to `_imp____glewGetUniformLocation'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader12setParameterERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEff+0x116): undefined reference to `_imp____glewUniform2f'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader12setParameterERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEfff+0x20): undefined reference to `_imp____glewGetHandleARB'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader12setParameterERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEfff+0x2f): undefined reference to `_imp____glewUseProgramObjectARB'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader12setParameterERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEfff+0x74): undefined reference to `_imp____glewUniform3fARB'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader12setParameterERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEfff+0xe1): undefined reference to `_imp____glewUseProgram'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader12setParameterERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEfff+0x10e): undefined reference to `_imp____glewGetUniformLocation'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader12setParameterERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEfff+0x124): undefined reference to `_imp____glewUniform3f'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader12setParameterERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEffff+0x20): undefined reference to `_imp____glewGetHandleARB'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader12setParameterERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEffff+0x2f): undefined reference to `_imp____glewUseProgramObjectARB'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader12setParameterERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEffff+0x74): undefined reference to `_imp____glewUniform4fARB'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader12setParameterERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEffff+0xe3): undefined reference to `_imp____glewUseProgram'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader12setParameterERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEffff+0x110): undefined reference to `_imp____glewGetUniformLocation'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader12setParameterERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEffff+0x126): undefined reference to `_imp____glewUniform4f'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader12setParameterERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_4math8Matrix4fE+0x2f): undefined reference to `_imp____glewUseProgram'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader12setParameterERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_4math8Matrix4fE+0x68): undefined reference to `_imp____glewUniformMatrix4fv'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader12setParameterERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_4math8Matrix4fE+0x7d): undefined reference to `_imp___ZN6odfaeg4math8Matrix4f10toGlMatrixEv'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader12setParameterERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_4math8Matrix4fE+0xe1): undefined reference to `_imp____glewGetHandleARB'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader12setParameterERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_4math8Matrix4fE+0xf0): undefined reference to `_imp____glewUseProgramObjectARB'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader12setParameterERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_4math8Matrix4fE+0x16f): undefined reference to `_imp___ZN6odfaeg4math8Matrix4f10toGlMatrixEv'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader12setParameterERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_4math8Matrix4fE+0x174): undefined reference to `_imp____glewUniformMatrix4fvARB'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader12setParameterERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIPNS0_15TransformMatrixESaISC_EE+0x5b): undefined reference to `_imp____glewGetHandleARB'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader12setParameterERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIPNS0_15TransformMatrixESaISC_EE+0x76): undefined reference to `_imp____glewUseProgramObjectARB'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader12setParameterERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIPNS0_15TransformMatrixESaISC_EE+0x11e): undefined reference to `_imp___ZN6odfaeg7graphic15TransformMatrix9getMatrixEv'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader12setParameterERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIPNS0_15TransformMatrixESaISC_EE+0x133): undefined reference to `_imp___ZN6odfaeg4math8Matrix4f9transposeEv'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader12setParameterERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIPNS0_15TransformMatrixESaISC_EE+0x148): undefined reference to `_imp___ZN6odfaeg4math8Matrix4f10toGlMatrixEv'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader12setParameterERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIPNS0_15TransformMatrixESaISC_EE+0x208): undefined reference to `_imp____glewUniformMatrix4fvARB'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader12setParameterERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIPNS0_15TransformMatrixESaISC_EE+0x24d): undefined reference to `_imp____glewUseProgramObjectARB'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader12setParameterERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS0_7TextureE+0x14b): undefined reference to `glGetIntegerv@8'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/shader.o:shader.cpp:(.text$_ZN6odfaeg7graphic6Shader12setParameterERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS0_7TextureE+0x22f): undefined reference to `_imp___ZN2sf3errEv'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/application.o:application.cpp:(.text$_ZN6odfaeg4core11ApplicationD1Ev[__ZN6odfaeg4core11ApplicationD1Ev]+0x136): undefined reference to `_imp___ZN6odfaeg7graphic22RenderComponentManagerD1Ev'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/application.o:application.cpp:(.text$_ZN6odfaeg4core11ApplicationD0Ev[__ZN6odfaeg4core11ApplicationD0Ev]+0x136): undefined reference to `_imp___ZN6odfaeg7graphic22RenderComponentManagerD1Ev'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/application.o:application.cpp:(.text.startup._GLOBAL__sub_I__ZN6odfaeg4core11Application3appE+0xad): undefined reference to `_imp___ZN2sf5ClockC1Ev'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/command.o:command.cpp:(.text$_ZN6odfaeg4core7CommandC2ENS0_6ActionENS0_12FastDelegateIvEE+0x9b): undefined reference to `_imp___ZN6odfaeg4core6ActionC1ERKS1_'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/command.o:command.cpp:(.text$_ZN6odfaeg4core7CommandC2ENS0_6ActionENS0_12FastDelegateIbEENS3_IvEE+0x9b): undefined reference to `_imp___ZN6odfaeg4core6ActionC1ERKS1_'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/command.o:command.cpp:(.text$_ZN6odfaeg4core7CommandC2ERKS1_+0xb2): undefined reference to `_imp___ZN6odfaeg4core6ActionC1ERKS1_'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/command.o:command.cpp:(.text$_ZN6odfaeg4core7Command11isTriggeredEv+0x68): undefined reference to `_imp___ZN6odfaeg4core6Action11isTriggeredEv'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/command.o:command.cpp:(.text$_ZN6odfaeg4core7Command11isTriggeredEv+0x7b): undefined reference to `_imp___ZN6odfaeg4core6Action11isTriggeredEv'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/command.o:command.cpp:(.text$_ZN6odfaeg4core7Command19containsBufferEventERNS_6window6IEventE+0x8): undefined reference to `_imp___ZN6odfaeg4core6Action13containsEventERNS_6window6IEventE'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/command.o:command.cpp:(.text$_ZN6odfaeg4core7CommandaSERKS1_+0x6a): undefined reference to `_imp___ZN6odfaeg4core6ActionC1ERKS1_'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/odfaeg/Math/ray.o:ray.cpp:(.text$_ZN6odfaeg4math3RayC2ENS0_5Vec3fES2_+0x4f): undefined reference to `_imp___ZN6odfaeg4math5Vec3fmiERKS1_'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/odfaeg/Math/ray.o:ray.cpp:(.text$_ZN6odfaeg4math3Ray15intersectsWhereERS1_+0x56): undefined reference to `_imp___ZN6odfaeg4math5Vec3fmiERKS1_'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/odfaeg/Math/ray.o:ray.cpp:(.text$_ZN6odfaeg4math3Ray15intersectsWhereERS1_+0x5c): undefined reference to `_imp___ZNK6odfaeg4math5Vec3f5crossERKS1_'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/odfaeg/Math/ray.o:ray.cpp:(.text$_ZN6odfaeg4math3Ray15intersectsWhereERS1_+0x86): undefined reference to `_imp___ZNK6odfaeg4math5Vec3f3dotERKS1_'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/odfaeg/Math/ray.o:ray.cpp:(.text$_ZN6odfaeg4math3Ray15intersectsWhereERS1_+0x106): undefined reference to `_imp___ZN6odfaeg4math5Vec3f4dot2ERKS1_'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/odfaeg/Math/ray.o:ray.cpp:(.text$_ZN6odfaeg4math3Ray15intersectsWhereERS1_+0x131): undefined reference to `_imp___ZNK6odfaeg4math5Vec3f11magnSquaredEv'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/boundingBox.o:boundingBox.cpp:(.text$_ZN6odfaeg6physic11BoundingBox7getSizeEv+0x23): undefined reference to `_imp___ZN6odfaeg4math5Vec3fC1Efff'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/boundingBox.o:boundingBox.cpp:(.text$_ZN6odfaeg6physic11BoundingBox11getPositionEv+0x20): undefined reference to `_imp___ZN6odfaeg4math5Vec3fC1Efff'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/boundingBox.o:boundingBox.cpp:(.text$_ZN6odfaeg6physic11BoundingBox10intersectsERNS_4math3RayEbRNS0_18CollisionResultSet4InfoE+0xff): undefined reference to `_imp___ZN6odfaeg4math4Math3absEf'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/boundingBox.o:boundingBox.cpp:(.text$_ZN6odfaeg6physic11BoundingBox15intersectsWhereERNS_4math3RayERNS2_5Vec3fES6_RNS0_18CollisionResultSet4InfoE+0x105): undefined reference to `_imp___ZN6odfaeg4math5Vec3fmlEf'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/boundingBox.o:boundingBox.cpp:(.text$_ZN6odfaeg6physic11BoundingBox15intersectsWhereERNS_4math3RayERNS2_5Vec3fES6_RNS0_18CollisionResultSet4InfoE+0x129): undefined reference to `_imp___ZN6odfaeg4math5Vec3fplERKS1_'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/boundingBox.o:boundingBox.cpp:(.text$_ZN6odfaeg6physic11BoundingBox15intersectsWhereERNS_4math3RayERNS2_5Vec3fES6_RNS0_18CollisionResultSet4InfoE+0x137): undefined reference to `_imp___ZN6odfaeg4math5Vec3faSERKS1_'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/boundingBox.o:boundingBox.cpp:(.text$_ZN6odfaeg6physic11BoundingBox15intersectsWhereERNS_4math3RayERNS2_5Vec3fES6_RNS0_18CollisionResultSet4InfoE+0x1c6): undefined reference to `_imp___ZN6odfaeg4math4Math3absEf'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/boundingBox.o:boundingBox.cpp:(.text$_ZN6odfaeg6physic11BoundingBox15intersectsWhereERNS_4math3RayERNS2_5Vec3fES6_RNS0_18CollisionResultSet4InfoE+0x271): undefined reference to `_imp___ZN6odfaeg4math5Vec3faSERKS1_'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/boundingBox.o:boundingBox.cpp:(.text$_ZN6odfaeg6physic11BoundingBox15intersectsWhereERNS_4math3RayERNS2_5Vec3fES6_RNS0_18CollisionResultSet4InfoE+0x27b): undefined reference to `_imp___ZN6odfaeg4math5Vec3fmlEf'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/boundingBox.o:boundingBox.cpp:(.text$_ZN6odfaeg6physic11BoundingBox15intersectsWhereERNS_4math3RayERNS2_5Vec3fES6_RNS0_18CollisionResultSet4InfoE+0x293): undefined reference to `_imp___ZN6odfaeg4math5Vec3fplERKS1_'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/boundingBox.o:boundingBox.cpp:(.text$_ZN6odfaeg6physic11BoundingBox10intersectsERS1_RNS0_18CollisionResultSet4InfoE+0x60b): undefined reference to `_imp___ZN6odfaeg4math5Vec3fmiERKS1_'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/boundingBox.o:boundingBox.cpp:(.text$_ZN6odfaeg6physic11BoundingBox10intersectsERS1_RNS0_18CollisionResultSet4InfoE+0x753): undefined reference to `_imp___ZN6odfaeg4math5Vec3f18computeDistSquaredERKS1_'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/boundingBox.o:boundingBox.cpp:(.text$_ZN6odfaeg6physic11BoundingBox10intersectsERS1_RNS0_18CollisionResultSet4InfoE+0x76e): undefined reference to `_imp___ZN6odfaeg4math5Vec3f18computeDistSquaredERKS1_'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/boundingBox.o:boundingBox.cpp:(.text$_ZN6odfaeg6physic11BoundingBox10intersectsERS1_RNS0_18CollisionResultSet4InfoE+0x7eb): undefined reference to `_imp___ZNK6odfaeg4math5Vec3f5crossERKS1_'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/boundingBox.o:boundingBox.cpp:(.text$_ZN6odfaeg6physic11BoundingBox10intersectsERS1_RNS0_18CollisionResultSet4InfoE+0x7fa): undefined reference to `_imp___ZN6odfaeg4math5Vec3f15getAngleBetweenERKS1_S3_'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/boundingBox.o:boundingBox.cpp:(.text$_ZN6odfaeg6physic11BoundingBox10intersectsERS1_RNS0_18CollisionResultSet4InfoE+0xdcd): undefined reference to `_imp___ZN6odfaeg4math5Vec3fmiERKS1_'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/boundingBox.o:boundingBox.cpp:(.text$_ZN6odfaeg6physic11BoundingBox10intersectsERS1_RNS0_18CollisionResultSet4InfoE+0xf1f): undefined reference to `_imp___ZN6odfaeg4math5Vec3f18computeDistSquaredERKS1_'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/boundingBox.o:boundingBox.cpp:(.text$_ZN6odfaeg6physic11BoundingBox10intersectsERS1_RNS0_18CollisionResultSet4InfoE+0xf3a): undefined reference to `_imp___ZN6odfaeg4math5Vec3f18computeDistSquaredERKS1_'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/boundingBox.o:boundingBox.cpp:(.text$_ZN6odfaeg6physic11BoundingBox10intersectsERS1_RNS0_18CollisionResultSet4InfoE+0xfb7): undefined reference to `_imp___ZNK6odfaeg4math5Vec3f5crossERKS1_'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/boundingBox.o:boundingBox.cpp:(.text$_ZN6odfaeg6physic11BoundingBox10intersectsERS1_RNS0_18CollisionResultSet4InfoE+0xfc6): undefined reference to `_imp___ZN6odfaeg4math5Vec3f15getAngleBetweenERKS1_S3_'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/boundingBox.o:boundingBox.cpp:(.text$_ZN6odfaeg6physic11BoundingBox10intersectsERS1_RNS0_18CollisionResultSet4InfoE+0x1344): undefined reference to `_imp___ZN6odfaeg4math5Vec3f18computeDistSquaredERKS1_'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/boundingBox.o:boundingBox.cpp:(.text$_ZN6odfaeg6physic11BoundingBox10intersectsERS1_RNS0_18CollisionResultSet4InfoE+0x1608): undefined reference to `_imp___ZN6odfaeg4math5Vec3f18computeDistSquaredERKS1_'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/boundingBox.o:boundingBox.cpp:(.text$_ZN6odfaeg4math8Triangle10intersectsERNS0_3RayE[__ZN6odfaeg4math8Triangle10intersectsERNS0_3RayE]+0x23): undefined reference to `_imp___ZNK6odfaeg4math5Vec3f5crossERKS1_'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/boundingBox.o:boundingBox.cpp:(.text$_ZN6odfaeg4math8Triangle10intersectsERNS0_3RayE[__ZN6odfaeg4math8Triangle10intersectsERNS0_3RayE]+0x70): undefined reference to `_imp___ZN6odfaeg4math5Vec3f4dot2ERKS1_'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/boundingBox.o:boundingBox.cpp:(.text$_ZN6odfaeg4math8Triangle10intersectsERNS0_3RayE[__ZN6odfaeg4math8Triangle10intersectsERNS0_3RayE]+0x112): undefined reference to `_imp___ZN6odfaeg4math5Vec3fC1Ev'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/boundingBox.o:boundingBox.cpp:(.text$_ZN6odfaeg4math8Triangle10intersectsERNS0_3RayE[__ZN6odfaeg4math8Triangle10intersectsERNS0_3RayE]+0x13e): undefined reference to `_imp___ZN6odfaeg4math5Vec3fmiERKS1_'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/boundingBox.o:boundingBox.cpp:(.text$_ZN6odfaeg4math8Triangle10intersectsERNS0_3RayE[__ZN6odfaeg4math8Triangle10intersectsERNS0_3RayE]+0x3bb): undefined reference to `_imp___ZN6odfaeg4math5Vec3faSERKS1_'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/boundingBox.o:boundingBox.cpp:(.text$_ZN6odfaeg4math8Triangle10intersectsES1_[__ZN6odfaeg4math8Triangle10intersectsES1_]+0x20b): undefined reference to `_imp___ZNK6odfaeg4math5Vec3f11isNulVectorEv'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/boundingBox.o:boundingBox.cpp:(.text$_ZN6odfaeg4math8Triangle10intersectsES1_[__ZN6odfaeg4math8Triangle10intersectsES1_]+0x230): undefined reference to `_imp___ZNK6odfaeg4math5Vec3f5crossERKS1_'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/boundingBox.o:boundingBox.cpp:(.text$_ZN6odfaeg4math8Triangle10intersectsES1_[__ZN6odfaeg4math8Triangle10intersectsES1_]+0x3b2): undefined reference to `_imp___ZN6odfaeg4math5Vec3f4dot2ERKS1_'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/boundingBox.o:boundingBox.cpp:(.text$_ZN6odfaeg4math8Triangle10intersectsES1_[__ZN6odfaeg4math8Triangle10intersectsES1_]+0x4d6): undefined reference to `_imp___ZN6odfaeg4math5Vec3fmiERKS1_'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/boundingBox.o:boundingBox.cpp:(.text$_ZN6odfaeg4math8Triangle10intersectsES1_[__ZN6odfaeg4math8Triangle10intersectsES1_]+0x5a9): undefined reference to `_imp___ZN6odfaeg4math5Vec3fmiERKS1_'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/boundingBox.o:boundingBox.cpp:(.text$_ZN6odfaeg4math8Triangle10intersectsES1_[__ZN6odfaeg4math8Triangle10intersectsES1_]+0x69a): undefined reference to `_imp___ZN6odfaeg4math5Vec3fmiERKS1_'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/boundingBox.o:boundingBox.cpp:(.text$_ZN6odfaeg4math8Triangle10intersectsES1_[__ZN6odfaeg4math8Triangle10intersectsES1_]+0x7ed): undefined reference to `_imp___ZNK6odfaeg4math5Vec3f5crossERKS1_'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/boundingBox.o:boundingBox.cpp:(.text$_ZN6odfaeg4math8Triangle10intersectsES1_[__ZN6odfaeg4math8Triangle10intersectsES1_]+0x92a): undefined reference to `_imp___ZN6odfaeg4math5Vec3fmiERKS1_'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/boundingBox.o:boundingBox.cpp:(.text$_ZN6odfaeg4math8Triangle10intersectsES1_[__ZN6odfaeg4math8Triangle10intersectsES1_]+0x987): undefined reference to `_imp___ZN6odfaeg4math5Vec3fmiERKS1_'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/boundingBox.o:boundingBox.cpp:(.text$_ZN6odfaeg4math8Triangle10intersectsES1_[__ZN6odfaeg4math8Triangle10intersectsES1_]+0x9e6): undefined reference to `_imp___ZN6odfaeg4math5Vec3fmiERKS1_'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/boundingBox.o:boundingBox.cpp:(.text$_ZN6odfaeg6physic11BoundingBox10intersectsERNS0_18BoundingPolyhedronERNS0_18CollisionResultSet4InfoE+0x3b0): undefined reference to `_imp___ZN6odfaeg4math5Vec3fmiERKS1_'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/boundingBox.o:boundingBox.cpp:(.text$_ZN6odfaeg6physic11BoundingBox10intersectsERNS0_18BoundingPolyhedronERNS0_18CollisionResultSet4InfoE+0x51e): undefined reference to `_imp___ZN6odfaeg4math5Vec3f18computeDistSquaredERKS1_'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/boundingBox.o:boundingBox.cpp:(.text$_ZN6odfaeg6physic11BoundingBox10intersectsERNS0_18BoundingPolyhedronERNS0_18CollisionResultSet4InfoE+0x53c): undefined reference to `_imp___ZN6odfaeg4math5Vec3f18computeDistSquaredERKS1_'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/boundingBox.o:boundingBox.cpp:(.text$_ZN6odfaeg6physic11BoundingBox10intersectsERNS0_18BoundingPolyhedronERNS0_18CollisionResultSet4InfoE+0x5bc): undefined reference to `_imp___ZNK6odfaeg4math5Vec3f5crossERKS1_'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/boundingBox.o:boundingBox.cpp:(.text$_ZN6odfaeg6physic11BoundingBox10intersectsERNS0_18BoundingPolyhedronERNS0_18CollisionResultSet4InfoE+0x5d8): undefined reference to `_imp___ZN6odfaeg4math5Vec3f15getAngleBetweenERKS1_S3_'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/boundingBox.o:boundingBox.cpp:(.text$_ZN6odfaeg6physic11BoundingBox10intersectsERNS0_18BoundingPolyhedronERNS0_18CollisionResultSet4InfoE+0x95a): undefined reference to `_imp___ZN6odfaeg4math5Vec3fmiERKS1_'
                                                    obj/cpp_Windows_O2/lib/ODFAEG/boundingBox.o:boundingBox.cpp:(.text$_ZN6odfaeg6physic11BoundingBox10intersectsERNS0_18BoundingPolyhedronERNS0_18CollisionResultSet4InfoE+0xabf): undefined reference to `_imp___ZN6odfaeg4math5Vec3f18computeDistSquaredERKS1_'
                                                    
                                                    C:/Users/Laurent/Downloads/Cwc-0.0.95.7/Cwc-0.0.95.7/Toolchain/VLianceTool/LibRT/LibRT-8.0.3/bin/../lib/gcc/i686-w64-mingw32/8.1.0/../../../../i686-w64-mingw32/lib/../lib/libmingw32.a(lib32_libmingw32_a-crt0_c.o):crt0_c.c:(.text.startup+0x39): undefined reference to `WinMain@16'
                                                    collect2.exe: error: ld returned 1 exit status
                                                    --Stop Build--
                                                     --- End with 3 errors --- 4.3 sec

                                                    Et il y a encore plus d'undefined references, le message était trop long alors j'ai du retirer des lignes.

                                                    -
                                                    Edité par OmbreNoire 30 janvier 2020 à 16:39:07

                                                    • Partager sur Facebook
                                                    • Partager sur Twitter
                                                      31 janvier 2020 à 20:37:23

                                                      Je te conseil de builder en Static en ajoutant ceci:
                                                      -DODFAEG_STATIC
                                                      -DSFML_STATIC
                                                      -DGLEW_STATIC

                                                      J'ai ajouté Glew 2.1.0 qui contient les .a

                                                      ;Generate executable
                                                      -o obj/cpp_{_sPlatform}_{_sOpt}/ -#To _out/{_sPlatform}_{_sOpt}/App.*
                                                      -L ../ODFAEG/extlibs/bin/x86/
                                                      -L ../ODFAEG/extlibs/libs-mingw/x86/
                                                      -L ../ExtLib/SFML-2.5.1/lib/
                                                      -I ../ExtLib/GLEW/glew-2.1.0/lib/
                                                       
                                                      -lglew -lsfml-graphics
                                                      ...


                                                      Le reste ben c'est la même chose, des .cpp pas compiler, des libs pas linké, etc.

                                                      Continue comme ça, ça avance bien.
                                                      • Partager sur Facebook
                                                      • Partager sur Twitter

                                                      GZE, un moteur multiplateforme, adapté pour de la 2D, 3D et création de logiciels.

                                                        1 février 2020 à 18:25:05

                                                        Je n'arrive pas à compiler glew avec cmake et mingw il me dit glew dir not found quand je le télécharge sur git et dans les binaries il ne me donne que des .lib.

                                                        Et assimp non plus j'ai une erreur en compilation :

                                                        '

                                                        C:\Program' n’est pas reconnu en tant que commande interne
                                                        
                                                        ou externe, un programme exécutable ou un fichier de commandes.
                                                        
                                                        C:\Program Files\mingw-w64\x86_64-8.1.0-posix-seh-rt_v6-rev0\mingw64\bin\windres.exe: preprocessing failed.
                                                        
                                                        mingw32-make[2]: *** [contrib\zlib\CMakeFiles\zlib.dir\build.make:61: contrib/zlib/zlib1rc.obj] Error 1
                                                        
                                                        mingw32-make[1]: *** [CMakeFiles\Makefile2:272: contrib/zlib/CMakeFiles/zlib.dir/all] Error 2
                                                        
                                                        mingw32-make: *** [Makefile:129: all] Error 2

                                                        Comment compiler ces libs avec cwc et générer les .a comme tu l'a fais avec SFML ?

                                                        Et comment tu as fait pour avoir toutes les dépendances (les .a) de SFML et SFML en static ?

                                                        openssl.a non plus n'est pas dedans.

                                                        -
                                                        Edité par OmbreNoire 1 février 2020 à 18:42:48

                                                        • Partager sur Facebook
                                                        • Partager sur Twitter
                                                          1 février 2020 à 19:29:47

                                                          J'ai simplement été chercher ce qui à été pré-compilé avec mingw:


                                                          Dans le meilleurs des monde, il est mieux de compiler avec le moteur, comme tu peux le voir, on se retrouve avec des build qui ont été compilé avec différents compilateur, ce qui peu causer des incompatibilités.

                                                          Si c'est un projets Github, Cwc peut même aller les télécharger automatiquement (les releases). Mais pour l'instant je dirais, concentre toi à le faire fonctionner avec les libs pré-compilé.

                                                          Pour OpenSSL, si tu veux j'ai déjà un projet qui l'utilise auquel tu peux prendre exemple: Restclient-cpp

                                                          • Partager sur Facebook
                                                          • Partager sur Twitter

                                                          GZE, un moteur multiplateforme, adapté pour de la 2D, 3D et création de logiciels.

                                                            1 février 2020 à 20:21:08

                                                            Justement SFML et Glew ont été compilé avec mingw, et ODFAEG avec cwc, ça ne va pas posé de problème au linkage vu que tu utilises différent compilateurs ?

                                                            -
                                                            Edité par OmbreNoire 1 février 2020 à 20:21:37

                                                            • Partager sur Facebook
                                                            • Partager sur Twitter
                                                              1 février 2020 à 21:21:50

                                                              Cwc utilise MinGw 8 par défaut, les autres possibilités sont Clang (ABI compatible), le compilateur Emscripten et autres...
                                                              • Partager sur Facebook
                                                              • Partager sur Twitter

                                                              GZE, un moteur multiplateforme, adapté pour de la 2D, 3D et création de logiciels.

                                                              [Framework] ODFAEG

                                                              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                                              • Editeur
                                                              • Markdown