1. #1
    Membre du Club
    Profil pro
    Inscrit en
    avril 2010
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : avril 2010
    Messages : 85
    Points : 60
    Points
    60

    Par défaut Build de Ogre3D avec mingw64, erreur avec msvcrt.dll

    Bonjour,

    j'essaye de faire un projet utilisant Ogre3D pouvant être compilé sur windows et linux ; pour ce j'ai choisi
    de travailler sur windows avec msys2 et mingw64.
    Je suis parvenu a compiler Ogre3D à partir des sources (sinbad).

    Lorsque j'utilise la librairie, a l'execution, j'ai cette erreur:
    Nom : mscvrt.png
Affichages : 53
Taille : 8,1 Ko

    En fouillant le code, j'ai trouvé l'utilisation de cette fonction dans OgreStringConverter.cpp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    #if OGRE_PLATFORM == OGRE_PLATFORM_WIN32 || OGRE_PLATFORM == OGRE_PLATFORM_WINRT
    #   define LC_NUMERIC_MASK LC_NUMERIC
    #   define newlocale(cat, loc, base) _create_locale(cat, loc)
    #endif
    _create_locale est defini dans
    locale.h de mingw

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      _locale_t __cdecl _create_locale(int _Category,const char *_Locale);
    Je n'arrive pas trop à savoir si le problème vient de la dll (ma dll est assez récente 7.0.7601.17744) ou de mingw
    Je cherche des solutions, idées pour résoudre ce problème...

    Par avance merci pour tous idées/indices/expériences

  2. #2
    Membre émérite Avatar de yildiz-online
    Homme Profil pro
    Architecte technique
    Inscrit en
    octobre 2011
    Messages
    723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : octobre 2011
    Messages : 723
    Points : 2 501
    Points
    2 501

    Par défaut

    Je fais à peu près la même chose, mis à part que je cross compile depuis linux

    Comment se fait-il que tu utilises les runtimes de msvc alors que tu as compilé avec mingw?
    Yildiz-Engine an open-source modular game engine: Website
    Yildiz-Online a 3D MMORTS in alpha: Facebook page / Youtube page

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    avril 2010
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : avril 2010
    Messages : 85
    Points : 60
    Points
    60

    Par défaut

    Je pense que cela vient soit du plugin directX qui est buildé, soit des directives CMAKE:

    CMAKE_C_STANDARD_LIBRARIES: -lkernel32 -luser32 -lgdi32 -lwinspool -lshell32 -lole32 -loleaut32 -luuid -lcomdlg32 -ladvapi32

    Je ne m'y connais pas assez...

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    avril 2010
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : avril 2010
    Messages : 85
    Points : 60
    Points
    60

    Par défaut

    Ah je viens de voir que dans CMAKE (gui), il y a des chemins vers des libs situées dans les repertoires du sdk directX
    pour le build du plugin directX11.
    Vu que je ne veux pas de ce plugin, je vais les virer. Je relance la compilation (cette nuit) pour voir.

  5. #5
    Membre émérite Avatar de yildiz-online
    Homme Profil pro
    Architecte technique
    Inscrit en
    octobre 2011
    Messages
    723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : octobre 2011
    Messages : 723
    Points : 2 501
    Points
    2 501

    Par défaut

    C'est possible, je l'avais également viré (9 et 11) pour ne garder qu' opengl en renderer
    Yildiz-Engine an open-source modular game engine: Website
    Yildiz-Online a 3D MMORTS in alpha: Facebook page / Youtube page

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    avril 2010
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : avril 2010
    Messages : 85
    Points : 60
    Points
    60

    Par défaut

    J'ai essaye en supprimant tous les path vers le sdk directX et j'ai limité les librairies a -lgdi32 (obligatoire,
    mais j'ai toujours le meme problème.

    Je vais essayer en enlevant complètement le build du RenderSystem directX9 (même si ça m'embête un peu)

  7. #7
    Membre émérite Avatar de yildiz-online
    Homme Profil pro
    Architecte technique
    Inscrit en
    octobre 2011
    Messages
    723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : octobre 2011
    Messages : 723
    Points : 2 501
    Points
    2 501

    Par défaut

    Mais pour en revenir à la question initiale, comment se fait il que tu utilises le runtime msvc alors que tu as compilé avec mingw?
    Yildiz-Engine an open-source modular game engine: Website
    Yildiz-Online a 3D MMORTS in alpha: Facebook page / Youtube page

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    avril 2010
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : avril 2010
    Messages : 85
    Points : 60
    Points
    60

    Par défaut

    C'est sans doute le problème et je n'en sais rien...

    J'ai vu avec CMAKE que la directive DIRECTX9_LIBRARY
    pointait ver la dll de c:/windows, je l'ai remis sur C:/msys64/mingw64/x86_64-w64-mingw32/lib/libd3d9.a

    Je recompile tout ça. j'enlève la dépendence Cg également.

    Je me base sur ce tuto pour compiler, avec
    quelques ajustements.

  9. #9
    Membre émérite Avatar de yildiz-online
    Homme Profil pro
    Architecte technique
    Inscrit en
    octobre 2011
    Messages
    723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : octobre 2011
    Messages : 723
    Points : 2 501
    Points
    2 501

    Par défaut

    Tu fais bien d'enlever CG, ce n'est plus supporté par Nvidia depuis un moment.

    Normalement, les runtimes à utiliser sont libgcc_s_sjlj-1.dll et libstdc++6.dll (avec mingw64 en tous cas, avec mingw, pas sur que ce soit exactement les mêmes)
    Yildiz-Engine an open-source modular game engine: Website
    Yildiz-Online a 3D MMORTS in alpha: Facebook page / Youtube page

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    avril 2010
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : avril 2010
    Messages : 85
    Points : 60
    Points
    60

    Par défaut

    Essai sans Cg et sans RenderSystem DirectX9 : meme résultat ...

  11. #11
    Membre émérite Avatar de yildiz-online
    Homme Profil pro
    Architecte technique
    Inscrit en
    octobre 2011
    Messages
    723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : octobre 2011
    Messages : 723
    Points : 2 501
    Points
    2 501

    Par défaut

    Tu utilises bien les bons runtime?
    Yildiz-Engine an open-source modular game engine: Website
    Yildiz-Online a 3D MMORTS in alpha: Facebook page / Youtube page

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    avril 2010
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : avril 2010
    Messages : 85
    Points : 60
    Points
    60

    Par défaut

    A priori oui,
    par contre j'ai peut être trouvé un indice dans le CMakeLists.txt de ogre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    cmake_dependent_option(OGRE_CONFIG_STATIC_LINK_CRT "Statically link the MS CRT dlls (msvcrt)" FALSE "MSVC" FALSE)
    Je vois ça demain.
    merci pour ton aide en tout cas

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    avril 2010
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : avril 2010
    Messages : 85
    Points : 60
    Points
    60

    Par défaut

    Bon j'ai essayé le build dans tous sens en ayant incriminé cmake, mingw mais avec toujours le meme résultat.

    En recherchant un peu j'ai vu que le lien avec msvcrt.dll était "normal"
    ici

    je vais donc essayer de voir pourquoi cet dll n'est pas liée correctement...

  14. #14
    Membre du Club
    Profil pro
    Inscrit en
    avril 2010
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : avril 2010
    Messages : 85
    Points : 60
    Points
    60

    Par défaut

    J'ai un peu avancé (ou pas...) :
    - la version de msvcrt.dll sur mon poste ne comportait effectivement pas l'export _create_locale (je suis sous windows 7)
    - j'ai récupéré un msvcrt.dll d'un windows 10 qui a bien cette entrée (check avec dumpbin.exe), maintenant j'ai ces erreurs dès le linkage:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    C:\msys64\mingw64\bin\..\lib\gcc\x86_64-w64-mingw32\7.2.0\..\..\..\..\x86_64-w64-mingw32\lib\..\lib\crt2.o||In function `__tmainCRTStartup':|
    D:\develop\scripts\mingw-w64-crt-git\src\mingw-w64\mingw-w64-crt\crt\crtexe.c|285|undefined reference to `_set_invalid_parameter_handler'|
    C:\msys64\mingw64\bin\..\lib\gcc\x86_64-w64-mingw32\7.2.0\..\..\..\..\x86_64-w64-mingw32\lib\..\lib\libmingwex.a(lib64_libmingwex_a-mingw_vfprintf.o)||In function `__mingw_vfprintf':|
    D:\develop\scripts\mingw-w64-crt-git\src\mingw-w64\mingw-w64-crt\stdio\mingw_vfprintf.c|53|undefined reference to `_lock_file'|
    D:\develop\scripts\mingw-w64-crt-git\src\mingw-w64\mingw-w64-crt\stdio\mingw_vfprintf.c|55|undefined reference to `_unlock_file'|
    ||error: ld returned 1 exit status|
    je ne suis pas au bout des embetements.

  15. #15
    Membre du Club
    Profil pro
    Inscrit en
    avril 2010
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : avril 2010
    Messages : 85
    Points : 60
    Points
    60

    Par défaut

    Suite et fin...

    j'ai essayé de lier mingw à une autre version de msvcrt en suivant ce tuto.
    Je ne sais pas si cette manip est encore faisable aujourd'hui, en tout cas je n'y suis pas arrivé, trop d'erreurs.
    A tout hasard ci quelqu'un a déjà réussi, ça m'intéresse.

    J'arrête là les frais, j'ai réussi à avoir un SDK Ogre (v 1.10.8) avec DirectX9 qui ce passe très bien de la méthode _create_locale en modifiant un peu le code.

    merci quand même pour l'aide

Discussions similaires

  1. [ODS] Erreur avec PROC REPORT avec utilisation du FORMAT en BY et BYPAGE
    Par kimhoff dans le forum ODS et reporting
    Réponses: 0
    Dernier message: 28/07/2016, 15h53
  2. Message d'erreur avec IE : "Erreur non spécifiée"
    Par Jean-Marie64 dans le forum AJAX
    Réponses: 3
    Dernier message: 13/01/2011, 15h53
  3. Réponses: 2
    Dernier message: 14/03/2008, 14h37
  4. Réponses: 2
    Dernier message: 16/02/2007, 15h24
  5. Réponses: 2
    Dernier message: 11/02/2007, 14h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo