IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MinGW Discussion :

Build de Ogre3D avec mingw64, erreur avec msvcrt.dll


Sujet :

MinGW

  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 : 61
    Points
    61
    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 : 337
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
    Expert confirmé Avatar de yildiz-online
    Homme Profil pro
    Architecte de domaine
    Inscrit en
    Octobre 2011
    Messages
    1 444
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte de domaine

    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 444
    Points : 4 563
    Points
    4 563
    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?
    PXL le retro-gaming facile: Essayez-le

    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 : 61
    Points
    61
    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 : 61
    Points
    61
    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
    Expert confirmé Avatar de yildiz-online
    Homme Profil pro
    Architecte de domaine
    Inscrit en
    Octobre 2011
    Messages
    1 444
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte de domaine

    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 444
    Points : 4 563
    Points
    4 563
    Par défaut
    C'est possible, je l'avais également viré (9 et 11) pour ne garder qu' opengl en renderer
    PXL le retro-gaming facile: Essayez-le

    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 : 61
    Points
    61
    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
    Expert confirmé Avatar de yildiz-online
    Homme Profil pro
    Architecte de domaine
    Inscrit en
    Octobre 2011
    Messages
    1 444
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte de domaine

    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 444
    Points : 4 563
    Points
    4 563
    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?
    PXL le retro-gaming facile: Essayez-le

    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 : 61
    Points
    61
    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
    Expert confirmé Avatar de yildiz-online
    Homme Profil pro
    Architecte de domaine
    Inscrit en
    Octobre 2011
    Messages
    1 444
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte de domaine

    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 444
    Points : 4 563
    Points
    4 563
    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)
    PXL le retro-gaming facile: Essayez-le

    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 : 61
    Points
    61
    Par défaut
    Essai sans Cg et sans RenderSystem DirectX9 : meme résultat ...

  11. #11
    Expert confirmé Avatar de yildiz-online
    Homme Profil pro
    Architecte de domaine
    Inscrit en
    Octobre 2011
    Messages
    1 444
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte de domaine

    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 444
    Points : 4 563
    Points
    4 563
    Par défaut
    Tu utilises bien les bons runtime?
    PXL le retro-gaming facile: Essayez-le

    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 : 61
    Points
    61
    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 : 61
    Points
    61
    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 : 61
    Points
    61
    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 : 61
    Points
    61
    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, 14h53
  2. Réponses: 3
    Dernier message: 13/01/2011, 14h53
  3. Réponses: 2
    Dernier message: 14/03/2008, 13h37
  4. Réponses: 2
    Dernier message: 16/02/2007, 14h24
  5. Réponses: 2
    Dernier message: 11/02/2007, 13h11

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