Ajouter un commentaire

dip2technique
Récupérer une application générée par wxGlades

Bonjour à tous,
Désirant essayer le développement de petits programmes ( c++) avec fenêtres graphiques je viens d'installer sur mon système windows 2000 : Eclipse SDK 3.2
Le plugin CDT 3.1 ( pour le c++)
MinGW 5.0 + MSYS 1.0.11 ( pour la compilation
wxWidgets 2.8.4 comme bibliothèque

J'ai trouvé un tuto qui expliquait comment installer le tout et grâce à ce même tuto j'ai ( en faisant copier/ coller) pu compiler un petit prog qui ouvre une fenêtre simple lors du lancement de l'exécution.
A la lecture du .cpp j'ai trouvé que l'utilisation de wxWidgets était un peu confuse pour moi et après des recherches sur le NET j'ai lu un tuto qui proposait de commencer le développement avec wxWidgets en utilisant un RAD " wxGlades". j'ai donc intallé wxGlades 0.5 et pour comparer avec le premier programme .cpp ci-dessus j'ai, à l'aide de wxGlade créé une fenêtre identique. Puis j'ai récupéré les fichiers générés pour les intégrer dans un nouveau projet créé avec l'IDE ECLIPSE.

-----------------Le fichier .h

// -*- C++ -*- generated by wxGlade 0.5 on Fri Aug 17 20:33:12 2007
#include "wx/wx.h"
#include "wx/image.h"
// begin wxGlade: ::dependencies
// end wxGlade

#ifndef ESSAI2_H
#define ESSAI2_H

class MyFrame: public wxFrame {
public:
// begin wxGlade: MyFrame::ids
// end wxGlade
MyFrame(wxWindow* parent, int id, const wxString& title, const wxPoint& pos=wxDefaultPosition, const wxSize& size=wxDefaultSize, long style=wxDEFAULT_FRAME_STYLE);
private:
// begin wxGlade: MyFrame::methods
void set_properties();
void do_layout();
// end wxGlade
protected:
// begin wxGlade: MyFrame::attributes
wxMenuBar* frame_1_menubar;
wxStatusBar* frame_1_statusbar;
// end wxGlade
}; // wxGlade: end class

#endif // ESSAI2_H

-----------le fichier.cpp

// -*- C++ -*- generated by wxGlade 0.5 on Fri Aug 17 20:33:12 2007
#include "Essai2.h"

MyFrame::MyFrame(wxWindow* parent, int id, const wxString& title, const wxPoint& pos, const wxSize& size, long style):
wxFrame(parent, id, title, pos, size, wxDEFAULT_FRAME_STYLE)
{
// begin wxGlade: MyFrame::MyFrame
frame_1_menubar = new wxMenuBar();
SetMenuBar(frame_1_menubar);
wxMenu* Fichier = new wxMenu();
frame_1_menubar->Append(Fichier, wxT("Fichier"));
wxMenu* Aide = new wxMenu();
frame_1_menubar->Append(Aide, wxT("Aide"));
frame_1_statusbar = CreateStatusBar(1, 0);
set_properties();
do_layout();
// end wxGlade
}

void MyFrame::set_properties()
{
// begin wxGlade: MyFrame::set_properties
SetTitle(wxT("Essai fenêtre"));
int frame_1_statusbar_widths[] = { -1 };
frame_1_statusbar->SetStatusWidths(1, frame_1_statusbar_widths);
const wxString frame_1_statusbar_fields[] = {
wxT("Essai réussi")
};
for(int i = 0; i < frame_1_statusbar->GetFieldsCount(); ++i) {
frame_1_statusbar->SetStatusText(frame_1_statusbar_fields[i], i);
}
// end wxGlade
}

void MyFrame::do_layout()
{
// begin wxGlade: MyFrame::do_layout
wxBoxSizer* sizer_1 = new wxBoxSizer(wxVERTICAL);
SetSizer(sizer_1);
sizer_1->Fit(this);
Layout();
// end wxGlade
}

J'ai ensuite créé le fichier makfile : ( :( en recopiant bêtement je dois avouer le fichier que j'ai utilisé dans la création du premier programme mais en changeant le nom de l'exécutable à créer)

-------------------makefile

# Détermine le nom du fichier exécutable.
EXEC = Essai2.exe
# Détermine la liste des fichiers sources.
SRCS = $(wildcard *.cpp)
# Détermine le nom du fichier qui contiendra
# les dépendances.
DEPFILE = .depend
# Construit la liste des fichiers temporaires à partir
# de la liste des fichiers sources.
OBJS = $(SRCS:%.cpp=%.o)
# wxWidgets variables
SCRDIR = j:/Programmation/eclipse/wxWidgets-2.8.4/
BUILDDIR = j:/Programmation/eclipse/wxWidgets-2.8.4/build-debug/
INCLUDEDIR = j:/Programmation/eclipse/wxWidgets-2.8.4/include/
CPPFLAGS = -DNO_GCC_PRAGMA -D__WXDEBUG__ \
-I${BUILDDIR}lib/wx/include/msw-ansi-debug-static-2.8 \
-I${SCRDIR}/include
CXXFLAGS = -ggdb -O0 -mthreads -Wall -Wno-ctor-dtor-privacy
LIBDIRNAME = $(BUILDDIR)lib
LDFLAGS_GUI = -mwindows
SAMPLES_RPATH_FLAG =
WXDEBUGFLAG = d
WX_LIB_FLAVOUR =
WX_RELEASE = 2.8
HOST_SUFFIX =
TOOLKIT_LOWERCASE = msw
TOOLKIT_VERSION =
PORTNAME = $(TOOLKIT_LOWERCASE)$(TOOLKIT_VERSION)
COND_MONOLITHIC_0___WXLIB_CORE_p_PART1 = \
-lwx_$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)
COND_MONOLITHIC_0___WXLIB_CORE_p_PART2 = \
$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_core-$(WX_RELEASE)$(HOST_SUFFIX)
COND_MONOLITHIC_0___WXLIB_CORE_p = \
$(COND_MONOLITHIC_0___WXLIB_CORE_p_PART1)$(COND_MONOLITHIC_0___WXLIB_CORE_p_PART2)
__WXLIB_CORE_p = $(COND_MONOLITHIC_0___WXLIB_CORE_p)
COND_MONOLITHIC_0___WXLIB_BASE_p_PART1 = \
-lwx_base$(WXBASEPORT)$(WXUNICODEFLAG)
COND_MONOLITHIC_0___WXLIB_BASE_p_PART2 = \
$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)-$(WX_RELEASE)$(HOST_SUFFIX)
COND_MONOLITHIC_0___WXLIB_BASE_p = \
$(COND_MONOLITHIC_0___WXLIB_BASE_p_PART1)$(COND_MONOLITHIC_0___WXLIB_BASE_p_PART2)
__WXLIB_BASE_p = $(COND_MONOLITHIC_0___WXLIB_BASE_p)
__LIB_TIFF_p = -lwxtiff$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)-$(WX_RELEASE)$(HOST_SUFFIX)
__LIB_JPEG_p = -lwxjpeg$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)-$(WX_RELEASE)$(HOST_SUFFIX)
__LIB_PNG_p = -lwxpng$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)-$(WX_RELEASE)$(HOST_SUFFIX)
__LIB_ZLIB_p = -lwxzlib$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)-$(WX_RELEASE)$(HOST_SUFFIX)
COND_WXUSE_REGEX_BUILTIN___LIB_REGEX_p = \
-lwxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)-$(WX_RELEASE)$(HOST_SUFFIX)
__LIB_REGEX_p = $(COND_WXUSE_REGEX_BUILTIN___LIB_REGEX_p)
__LIB_EXPAT_p = -lwxexpat$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)-$(WX_RELEASE)$(HOST_SUFFIX)
EXTRALIBS = -mthreads -lrpcrt4 -loleaut32 -lole32 -luuid -lwinspool -lwinmm -lshell32 -lcomctl32 -lcomdlg32 -lctl3d32 -ladvapi32 -lwsock32 -lgdi32
EXTRALIBS_FOR_BASE = $(EXTRALIBS)
EXTRALIBS_GUI =
EXTRALIBS_FOR_GUI = $(EXTRALIBS_GUI)
# Cette règle correspond à la règles par défaut.
all: $(DEPFILE) $(EXEC)
# Cette règle supprime tous les fichiers temporaires.
clean:
$(RM) *~ *.o \#*
# Cette règle supprime tous les fichiers temporaires,
# l'exécutable et le fichier de dépendance.
cleanall: clean
$(RM) $(EXEC) $(DEPEND_FILE)
# Cette règle créé, à proprement parlé, l'exécutable
# $(EXEC).
$(EXEC): $(OBJS)
g++ $(OBJS) -o $(EXEC) -L $(LIBDIRNAME) \
$(LDFLAGS_GUI) $(SAMPLES_RPATH_FLAG) \
$(__WXLIB_CORE_p) $(__WXLIB_BASE_p) $(__WXLIB_MONO_p) \
$(__LIB_TIFF_p) $(__LIB_JPEG_p) $(__LIB_PNG_p) \
$(__LIB_ZLIB_p) $(__LIB_REGEX_p) $(__LIB_EXPAT_p) \
$(EXTRALIBS_FOR_BASE) $(EXTRALIBS_FOR_GUI)
# Cette règle créé un fichier de dépendances, $(DEPFILE),
# pour les fichiers contenus dans $(SRCS).
$(DEPFILE): $(SRCS)
g++ -MM -I $(INCLUDEDIR) $(CPPFLAGS) $(CXXFLAGS) $(SRCS) > $(DEPFILE)
# Insère les dépendances générées par la règle $(DEPFILE).
-include $(DEPFILE)

et j'ai lancé la compilation mais je me retrouve avec l'erreur suivante:

mingw32-make -f makefile all
g++ Essai2.o -o Essai2.exe -L j:/Programmation/eclipse/wxWidgets-2.8.4/build-debug/lib \
-mwindows \
-lwx_mswd_core-2.8 -lwx_based-2.8 \
-lwxtiffd-2.8 -lwxjpegd-2.8 -lwxpngd-2.8 \
-lwxzlibd-2.8 -lwxregexd-2.8 -lwxexpatd-2.8 \
-mthreads -lrpcrt4 -loleaut32 -lole32 -luuid -lwinspool -lwinmm -lshell32 -lcomctl32 -lcomdlg32 -lctl3d32 -ladvapi32 -lwsock32 -lgdi32
J:/Programmation/eclipse/MinGW/bin/../lib/gcc/mingw32/3.4.2/../../../libmingw32.a(main.o):main.c:(.text+0x106): undefined reference to `WinMain@16'
collect2: ld returned 1 exit status
mingw32-make: *** [Essai2.exe] Error 1

Si vous pouviez m'aider cela serai super ! mais risque hélas de provoquer d'autres questions de ma part car je ne fai que de débuter et il faudra certainnement m'expliquer en détail le contenu de ce fameux fichier makefile au quel je ne comprends pas grand chose :oops:
D' avance merci de votre gentillesse. JP

Filtered HTML

Plain text

CAPTCHA
Cette question permet de vérifier que vous n'êtes pas un robot spammeur :-)
 H  H  DDD   N   N  Y   Y   QQQ   
H H D D NN N Y Y Q Q
HHHH D D N N N Y Q Q
H H D D N NN Y Q QQ
H H DDD N N Y QQQQ
Q