wxDev.fr, le portail francophone consacré à wxWidgets ! ( The french portal for wxWidgets )  
Esp. membre
Recheche rapide



Recherche avancée
Statistiques
Membres inscrits :2359

Membres en ligne : 0
Invités en ligne : 13

Valid XHTML 1.0 Transitional

Valid CSS2

Menu forum (navigation):
Pages: 1  
 
Accueil » Accueil forums » Compilation - Installation - Réglages IDE
» undefined references to wxOnAssert: Le retour...
Conversation (Résolue) : undefined references to wxOnAssert: Le retour...
21-05-2018 16:49:47  undefined references to wxOnAssert: Le retour... #1
paul_c_weiss (Membre)
Inscrit le : 07-12-2012
Messages: 21
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
21-05-2018 18:27:48  Re: undefined references to wxOnAssert: Le retour... #2
Xaviou (Administrateur)
Lieu: Annecy (74)
Inscrit le : 27-08-2007
Messages: 1375
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à...
21-05-2018 22:10:18  Re: undefined references to wxOnAssert: Le retour... #3
paul_c_weiss (Membre)
Inscrit le : 07-12-2012
Messages: 21
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
21-05-2018 22:16:50  Re: undefined references to wxOnAssert: Le retour... #4
Xaviou (Administrateur)
Lieu: Annecy (74)
Inscrit le : 27-08-2007
Messages: 1375
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à...
22-05-2018 10:02:39  Re: undefined references to wxOnAssert: Le retour... #5
paul_c_weiss (Membre)
Inscrit le : 07-12-2012
Messages: 21
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!)
22-05-2018 13:44:54  Re: undefined references to wxOnAssert: Le retour... #6
Xaviou (Administrateur)
Lieu: Annecy (74)
Inscrit le : 27-08-2007
Messages: 1375
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à...
26-05-2018 17:03:22  Re: undefined references to wxOnAssert: Le retour... #7
paul_c_weiss (Membre)
Inscrit le : 07-12-2012
Messages: 21
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
Menu forum (navigation):
Pages: 1  
 
Accueil » Accueil forums » Compilation - Installation - Réglages IDE
» undefined references to wxOnAssert: Le retour...