Membres inscrits :2359
Membres en ligne : 0
Invités en ligne : 9


|
Conversation (Résolue) : undefined references to wxOnAssert: Le retour... |
paul_c_weiss (Membre)
Inscrit le : 07-12-2012
Messages: 25
Snippets: 0
Tutoriels: 0
Hors ligne |
Bonjour, Je continue de transférer mes anciens programme sous les nouvelles versions de CODE::BLOCKS et de wxWidgets.
Je cherche maintenant à compiler un programme qui fait appel à deux librairies supplémentaires wxwidgets: wxsqlite3-3.3 et wxpdfdoc-0.9.5. Je travaille avec les librairies wxwidget 3.1 sous forme NON monolithique, et je désire un programme résultant qui ne fasse pas appel à des DLL. Je précise que mes programmes qui n'utilisent pas librairies supplémentaires fonctionnent à satisfaction...
J'ai donc modifié les fichiers makefile.gcc de manière que j'estime idoine, puis lancé la commande mingw32-make -f makefile.gcc (pour les deux libriries, évidemment...)
J'ai ensuite tenté un "BUILD" avec CODE::BLOCKS. Le programme compile, mais j'ai un wagon de "undefined references" dans wxpdfDoc à des fonctions relatives à "assert" (p. ex. wxOnAssert(...)).
Et à ce point, je sèche....
Quelques précisions: une instruction de compilation typique générée par CODE::BLOCKS est, par exemple:
mingw32-g++.exe -Wall -g -pipe -mthreads -Wno-unused-local-typedefs -Winvalid-pch -include wx_pch.h -std=gnu++11 -D__GNUWIN32__ -D__WXMSW__ -DwxUSE_UNICODE -DWX_PRECOMP -O2 -std=gnu++11 -DwxDEBUG_LEVEL=0 -ID:\wxW\include -ID:\wxpdfDoc\include -ID:\wxW\lib\gcc_lib\mswu -ID:\wxSQLite\include -ID:\wxSQLite\sqlite3\include -ID:\wxpdfDoc\include -c D:\Paul\Code_blocks\Cuisine\RecetteCree.cpp -o obj\Release\RecetteCree.o
alors que l'instruction de liaison est:
mingw32-g++.exe -LD:\wxW\lib\gcc_lib -o bin\Release\Cuisine.exe obj\Release\Ardoise.o obj\Release\Auxiliary.o obj\Release\CampCree.o obj\Release\CampDate.o obj\Release\CampEdite.o obj\Release\Commi.o obj\Release\ComposantCree.o obj\Release\Constants.o obj\Release\CuisineApp.o obj\Release\CuisineMain.o obj\Release\IngredientChoix.o obj\Release\IngredientCree.o obj\Release\IngredientEdite.o obj\Release\IngredientSupprime.o obj\Release\journal.o obj\Release\Menu.o obj\Release\ModQuantite.o obj\Release\RapportChoix.o obj\Release\RecetteChoix.o obj\Release\RecetteCree.o obj\Release\RecetteEdite.o obj\Release\RecettesIngredients.o obj\Release\RepasChoix.o obj\Release\ServiceCree.o obj\Release\ServiceEdite.o obj\Release\Services.o obj\Release\ServiceSupprime.o obj\Release\resource.res -s -mthreads D:\wxpdfDoc\lib\gcc_lib\libwxcode_msw31u_pdfdoc.a D:\wxSQLite\lib\gcc_lib\libwxcode_msw31u_wxsqlite3.a D:\wxSQLite\sqlite3\lib\sqlite3.a -lwxregexu -lwxmsw31u_html -lwxmsw31u_adv -lwxmsw31u_core -lwxbase31u -lwxpng -lwxjpeg -lwxtiff -lwxzlib -lole32 -loleaut32 -lcomctl32 -lkernel32 -luser32 -lgdi32 -lwinspool -lcomdlg32 -ladvapi32 -lshell32 -luuid -lwsock32 -lodbc32 -lshlwapi -lversion -mwindows
Les options de compilations pour les deux librairies sont:
# ------------------------------------------------------------------------- # These are configurable options: # -------------------------------------------------------------------------
#Définition de WXWIN comme le répertoire où est installé wxWidgets WXWIN = D:\wxW
# Compiler flags to link shared library LINK_DLL_FLAGS ?= -shared
# C++ compiler CXX = g++
# Standard flags for C++ CXXFLAGS ?=
# Standard preprocessor flags (common for CC and CXX) CPPFLAGS ?=
# Standard linker flags LDFLAGS ?=
# Use DLL build of wx library? [0,1] WX_SHARED ?= 0
# Use debug build of wxWidgets (define __WXDEBUG__)? [0,1] WX_DEBUG ?= 0
# Version of the wx library to build against. WX_VERSION ?= 31
# Use monolithic build of wxWidgets? [0,1] WX_MONOLITHIC ?= 0
# The directory where wxWidgets library is installed WX_DIR ?= $(WXWIN)
# Build this wxCode component as DLL or as static library? [0,1] SHARED ?= 0
|
|
Xaviou (Administrateur)
Lieu: Annecy (74)
Inscrit le : 27-08-2007
Messages: 1383
Snippets: 25
Tutoriels: 6
Site web
Hors ligne |
Salut.
En fait, quand tu compiles directement avec Code::Blocks, il ne faut utiliser wxDEBUG_LEVEL=0 que si tu as utilisé DEBUG_FLAG=0 lors de la compilation des libs wxWidgets (et des libs additionnelles).
Normalement, si tu supprimes cette option des options du compilateur, ça devrait marcher sans problème.
@+ Xav'
|
Le nouveau portail wxWidgets francophone : www.wxdev.fr Ben en fait, vous y êtes déjà...
|
paul_c_weiss (Membre)
Inscrit le : 07-12-2012
Messages: 25
Snippets: 0
Tutoriels: 0
Hors ligne |
Bonjour et Merci! Bon, alors tout d'abord, les lib wxWidgets sont celles de ce site (en version RELEASE évidemment, et les instructions pour compiler les lib additionnelles sont plus haut! J'ai supprimé wxDEBUG_LEVEL=0, et maintenant j'ai des erreurs (du même type, unsatisfied...assert...),sur le premier module que je lie. Il n'est pas différent des autres, donc le problème y est probablement aussi (mais on s'arrête...). ?? Paul
|
|
Xaviou (Administrateur)
Lieu: Annecy (74)
Inscrit le : 27-08-2007
Messages: 1383
Snippets: 25
Tutoriels: 6
Site web
Hors ligne |
Ok.
Alors il faut rajouter le wxDEBUG_LEVEL=0 pour la compilation de wxPdfDoc et wxSQLite
@+ Xav'
|
Le nouveau portail wxWidgets francophone : www.wxdev.fr Ben en fait, vous y êtes déjà...
|
paul_c_weiss (Membre)
Inscrit le : 07-12-2012
Messages: 25
Snippets: 0
Tutoriels: 0
Hors ligne |
D'accord. Mais n'est-ce pas ce que fait WX_DEBUG ?= 0 dans le fichier de make? (pas le temps d'aller plus loin aujourd'hui!)
|
|
Xaviou (Administrateur)
Lieu: Annecy (74)
Inscrit le : 27-08-2007
Messages: 1383
Snippets: 25
Tutoriels: 6
Site web
Hors ligne |
paul_c_weiss:Mais n'est-ce pas ce que fait WX_DEBUG ?= 0 dans le fichier de make? Pas du tout. Il s'agit de deux choses complètement différentes : WX_DEBUG active ou non les informations de débogage au sein des libs alors que DEBUG_FLAG / wxDEBUG_LEVEL active ou non l'affichage de boites d'avertissements pour une multitude de vérifications (qui, si elles ne sont pas satisfaites, ne devraient pas faire planter l'application, mais qu'il vaut mieux corriger).
Par exemple, si tu changes le style d'un wxTextValidator avec une combinaison de styles non cohérente (par exemple, wxFILTER_ALPHA et wxFILTER_NUMERIC), tu obtiendras une boite de message te l'indiquant (fichier /src/valtext.cpp vers la ligne 80). Mais ça n'est pas bloquant : le style sera appliqué avec la combinaison souhaitée vu qu'il s'agit d'une opération 'OR' avec de multiples valeurs. Et l'affichage de cette boite d'avertissement n'est pas soumise à la condition 'debug' : elle s'affichera aussi en mode release si tu as laissé wxDEBUG_LEVEL à sa valeur par défaut.
@+ Xav'
|
Le nouveau portail wxWidgets francophone : www.wxdev.fr Ben en fait, vous y êtes déjà...
|
paul_c_weiss (Membre)
Inscrit le : 07-12-2012
Messages: 25
Snippets: 0
Tutoriels: 0
Hors ligne |
Re-bonjour. Bon, alors j'ai modifié les fichiers makefile.gcc en ajoutant -DwxDEBUG_LEVEL=0 dans la définition de diverses variables en ???_CXXFLAGS. Après re-compilation, ajout de librairies et réarrangement d'icelles, cela compile Cela s'exécute aussi, à condition d'ajouter wxsqlite3.dll dans le répertoire exécutable. Alors maintenant: - Toutes les variable que j'ai modifées sont après un "Do not modify the rest of this file!" comminatoire. Y a-t-il une meilleure manière??? - J'ai mis à 0 les variables USE_DYNAMIC_SQLITE3_LOAD et SHARED. Comment se fait-il qu'on me demande encore une dll?
A bientôt Paul
|
|
|