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

wxWidgets Discussion :

Migration de la 2.6.3 sous VC9 à la 2.8.10 sous VC9


Sujet :

wxWidgets

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 81
    Par défaut Migration de la 2.6.3 sous VC9 à la 2.8.10 sous VC9
    bonjour,

    a partir d'un exemple DllCaller.exe & wxDll.dll sous VC6 et wx2.6.3, j'essaye de passer à la version sous VC9 et wx2.8.10

    la conversion de VC6 vers VC9 se passe bien et je recree mon projet correctement avec la version 2.6.3 de wxWidgets

    mais lorsque j'adapte les chemins et les lib de la version 2.6.3 vers la version 2.8.10 de wxWidgets, je me retrouve avec des erreurs de compilation de wxDll.cpp

    j'ai des erreurs sur des fichiers 'include' dont voici un extrait
    c:\microsoft\wxwidgets-2.8.10\include\wx\msw\winundef.h(39) : error C2664: 'CreateDialogParamW'*: impossible de convertir le paramètre 2 de 'LPCTSTR' en 'LPCWSTR'
    Les types pointés n'ont aucun rapport entre eux*; conversion nécessitant reinterpret_cast, cast de style C ou cast de style fonction
    il me semble que j'ai une erreur qui ressemblerait a un problème sur les 'lib' dont voici la liste chronologique
    wxmsw28d_core.lib
    wxbase28d.lib
    wxbase28d_net.lib
    wxbase28d_odbc.lib
    wxexpatd.lib
    wxjpegd.lib
    wxmsw28d_adv.lib
    wxmsw28d_dbgrid.lib
    wxmsw28_gl.lib
    wxmsw28d_html.lib
    wxmsw28d_xrc.lib
    wxbase28d_xml.lib
    wxpngd.lib
    wxregexd.lib
    wxtiffd.lib
    wxzlibd.lib
    winmm.lib
    comctl32.lib
    rpcrt4.lib
    wsock32.lib
    odbc32.lib
    odbccp32.lib
    et voici la ligne de commande du projet pour les pros
    /OUT:".\Debug/wxDll.dll" /INCREMENTAL /NOLOGO /LIBPATH:"c:\microsoft\wxWidgets-2.8.10\lib\vc_lib" /DLL /MANIFEST /MANIFESTFILE:".\Debug\wxDll.dll.intermediate.manifest" /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /DEBUG /PDB:".\Debug/wxDll.pdb" /SUBSYSTEM:WINDOWS /DYNAMICBASE:NO /IMPLIB:".\Debug/wxDll.lib" /MACHINE:X86 /ERRORREPORTROMPT wxmsw28d_core.lib wxbase28d.lib wxbase28d_net.lib wxbase28d_odbc.lib wxexpatd.lib wxjpegd.lib wxmsw28d_adv.lib wxmsw28d_dbgrid.lib wxmsw28_gl.lib wxmsw28d_html.lib wxmsw28d_xrc.lib wxbase28d_xml.lib wxpngd.lib wxregexd.lib wxtiffd.lib wxzlibd.lib winmm.lib comctl32.lib rpcrt4.lib wsock32.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib

    Auriez vous déjà été confronté à cette difficulté ?
    Trouver la solution me semble assez hasardeux si il s'agit d'un ordre dans la liste de bibliothèques

    Merci de votre lecture et de vos bonnes idées

  2. #2
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Salut,
    Il y a vraisemblablement une différence unicode/non unicode entre ton programme et la version de wxWidgets utilisée. Tu devrais compiler wxWidgets en unicode (librairie postfixée par 'u') et l'utiliser ainsi dans ton programme compilé lui aussi en unicode. Cf wxWidgets : Téléchargement et compilation sous Windows.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 81
    Par défaut
    dans mon repertoire
    c:\wxWidgets-2.8.10
    j'ai bien compilé à partir de
    C:\wxWidgets-2.8.10\build\msw\wx.dsw
    toutes les solutions possibles msw & mswd, mswu & mswud, mswuniv & mswunivd, mswunivu & mswunivud

    ainsi que les exemples qui fonctionnent à priori tous pour en avoir essayés plusieurs

    lorsque je change de configuration, j'ai toujours la même erreur, 'release' ou 'debug', 'unicode' ou pas 'unicode' ...

    voici la ligne de commande de compilation avec une configuration 'release' et non 'unicode'
    /O2 /Ob1 /I "c:\microsoft\wxWidgets-2.8.10\lib\vc_lib\msw" /I "c:\microsoft\wxWidgets-2.8.10\include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "__WXMSW__" /D "__WXDEBUG__" /D "DLLFUNCTIONS_EXPORTS=1" /D "_VC80_UPGRADE=0x0600" /D "_WINDLL" /GF /FD /EHsc /MTd /Gy /Fp".\Release/wxDll.pch" /Fo".\Release/" /Fd".\Release/" /W3 /nologo /c /TP /errorReport:prompt
    et la ligne de commande d'edition des liens correspondante
    /OUT:".\Release/wxDll.dll" /INCREMENTAL:NO /NOLOGO /LIBPATH:"c:\microsoft\wxWidgets-2.8.10\lib\vc_lib" /DLL /MANIFEST /MANIFESTFILE:".\Release\wxDll.dll.intermediate.manifest" /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /PDB:".\Release/wxDll.pdb" /SUBSYSTEM:WINDOWS /DYNAMICBASE:NO /IMPLIB:".\Release/wxDll.lib" /MACHINE:X86 /ERRORREPORT:PROMPT wxmsw28_core.lib wxbase28.lib wxbase28_net.lib wxbase28_odbc.lib wxexpat.lib wxjpeg.lib wxmsw28_adv.lib wxmsw28_dbgrid.lib wxmsw28_gl.lib wxmsw28_html.lib wxmsw28_xrc.lib wxbase28_xml.lib wxpng.lib wxregex.lib wxtiff.lib wxzlib.lib winmm.lib comctl32.lib rpcrt4.lib wsock32.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib
    et les erreurs sont toujours du meme type :
    c:\microsoft\wxwidgets-2.8.10\include\wx\msw\winundef.h(39) : error C2664: 'CreateDialogParamW'*: impossible de convertir le paramètre 2 de 'LPCTSTR' en 'LPCWSTR'
    Les types pointés n'ont aucun rapport entre eux*; conversion nécessitant reinterpret_cast, cast de style C ou cast de style fonction
    comme si il pouvait y avoir une confusion des fichiers d'entete .h ou je ne sais pas quoi d'autre ...

  4. #4
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Est-ce que dans "c:\microsoft\wxWidgets-2.8.10\lib\vc_lib\msw\setup.h", wxUSE_UNICODE vaut bien 0 ?
    Est-ce que tu n'aurais pas un #define _UNICODE ou #define UNICODE dans un autre en-tête ?
    Tu peux faire le test suivant avant de compiler ton projet : dans le fichier wxWidgets-2.8.10\include\wx\platform.h, ajoutes une ligne invalide à la ligne 235 environ :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    /* set wxUSE_UNICODE to 1 if UNICODE or _UNICODE is defined */
    #if defined(_UNICODE) || defined(UNICODE)
    je veux une erreur !
    #   undef wxUSE_UNICODE
    #   define wxUSE_UNICODE 1
    #else /* !UNICODE */
    #   ifndef wxUSE_UNICODE
    #       define wxUSE_UNICODE 0
    #   endif
    #endif /* UNICODE/!UNICODE */
    
    /* and vice versa: define UNICODE and _UNICODE if wxUSE_UNICODE is 1 */
    #if wxUSE_UNICODE
    je veux une erreur !
    #   ifndef _UNICODE
    #       define _UNICODE
    #   endif
    #   ifndef UNICODE
    #       define UNICODE
    #   endif
    #endif /* wxUSE_UNICODE */
    Si la compilation de ton projet sort une erreur c'est que tu as une incohérence dans les directives.

    Les lignes de compilation que tu montres ont l'air cohérente avec une version release unicode (à part /D "__WXDEBUG__" mais ça ne concerne pas l'unicode. Pourquoi une version debug dans une version release ?). Donc je pense plutôt à un mauvais setup.h ou à une définition de _UNICODE autre part.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 81
    Par défaut
    Est-ce que dans "c:\microsoft\wxWidgets-2.8.10\lib\vc_lib\msw\setup.h", wxUSE_UNICODE vaut bien 0 ?
    c'est exactement cela !

    en suivant le tutoriel d'installation , j'ai modifié cette valeur à 1 comme suggéré pour la compilation des bibliothèques
    et je ne comprennais pas pourquoi l'option generale 'unicode' de VC9 devenait compatible avec des include 'vc_lib\msw' non unicode ...

    mais pourquoi suggérer dans votre tutoriel la création de bibliothèques unicode (wxUSE_UNICODE 1) avec des noms de fichiers à priori non unicode (wxmsw28_core.lib au lieu de wxmsw28u_core.lib) ?

    Je finis le travail et propose une archive d'un projet VC9 & wxWid2.8.10

    Merci

  6. #6
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Citation Envoyé par carreau Voir le message
    mais pourquoi suggérer dans votre tutoriel la création de bibliothèques unicode (wxUSE_UNICODE 1) avec des noms de fichiers à priori non unicode (wxmsw28_core.lib au lieu de wxmsw28u_core.lib) ?
    Une boulette Mais je ne retrouve pas où je propose des noms de fichiers non unicode ? Peux-tu me dire où je me suis planté que je corrige

Discussions similaires

  1. Réponses: 2
    Dernier message: 16/02/2011, 20h12
  2. Une fonction sous Excel 2007 ne fonctionne pas sous Excel 2003
    Par Dryss51 dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 27/07/2007, 09h09
  3. Réponses: 8
    Dernier message: 11/07/2007, 10h38
  4. le sous-adressage des machines d'un sous-réseau
    Par witch dans le forum Hardware
    Réponses: 3
    Dernier message: 17/06/2007, 23h10
  5. Réponses: 11
    Dernier message: 22/04/2007, 11h58

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