Bonjour à tous,

Je suis en train de développer une application en C++ utilisant les bibliothèques portables gtkmm et cairomm (wrapping C++ de GTK et Cairo, donc).

Je développe sous Linux et je n'ai pas Windows installé sur ma machine. Je souhaiterais donc cross-compiler depuis ma machine.
En cherchant sur le net, je suis tombé sur ce tuto de qualité, amenant à la compilation depuis Linux d'un « Hello World » utilisant l'API Windows : http://www.dumbbell.fr/howto/win32-c...lation.fr.html que j'ai pu suivre jusqu'au bout sans problème (la fenêtre s'affiche bien sous Windows).

Jusque là, tout va bien.

Maintenant, j'essaie de passer à la vitesse supérieure en tentant de compiler mon appli, utilisant les bibliothèques sus-citées.
J'ai suivi ce tuto, expliquant justement comment cross-compiler une appli gtkmm grâce à un package tout fait par les dev de Inkscape (une application multi-plateforme utilisant justement gtkmm) : http://blog.heuristicdesign.co.uk/ar...ns-to-windows/ qui n'a malheureusement pas été concluant, étant donné qu'Inkscape semble utiliser directement Cairo, et non pas cairomm.
Voici la sortie du make :
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
23
24
25
florian@florian:~/Development/Hard Rock Studio$ make
In file included from src/Graphics/Container.h:26,
                 from src/Graphics/Canvas.h:24,
                 from src/MainFrame.h:26,
                 from src/main.cpp:21:
src/Graphics/Component.h:44: error: ‘Cairo’ has not been declared
src/Graphics/Component.h:44: error: expected ‘,’ or ‘...’ before ‘<’ token
src/Graphics/Component.h:46: error: ‘Cairo’ has not been declared
src/Graphics/Component.h:46: error: expected ‘,’ or ‘...’ before ‘<’ token
src/Graphics/Component.h:48: error: ‘Cairo’ has not been declared
src/Graphics/Component.h:48: error: expected ‘,’ or ‘...’ before ‘<’ token
In file included from src/Graphics/Canvas.h:24,
                 from src/MainFrame.h:26,
                 from src/main.cpp:21:
src/Graphics/Container.h:41: error: ‘Cairo’ has not been declared
src/Graphics/Container.h:41: error: expected ‘,’ or ‘...’ before ‘<’ token
In file included from src/MainFrame.h:26,
                 from src/main.cpp:21:
src/Graphics/Canvas.h:50: error: ‘Cairo’ has not been declared
src/Graphics/Canvas.h:50: error: ISO C++ forbids declaration of ‘RefPtr’ with no type
src/Graphics/Canvas.h:50: error: expected ‘;’ before ‘<’ token
src/Graphics/Canvas.h:62: error: ‘Cairo’ has not been declared
src/Graphics/Canvas.h:62: error: ISO C++ forbids declaration of ‘RefPtr’ with no type
src/Graphics/Canvas.h:62: error: expected ‘;’ before ‘<’ token
make: *** [obj/src/main.o] Erreur 1
Aucune erreur concernant GTK, par contre…

Étant donné que je n'ai pas envie de me limiter aux bibliothèques qu'utilise Inkscape, je me dis que j'ai tout intérêt à apprendre à cross-compiler GTK(mm) et Cairo(mm) moi-même.
Je commence donc à me rendre sur le site de GTK, où j'apprends que cette lib se base sur une autre lib appelée glib. Je télécharge donc les sources de glib (glib-2.12.13.tar.gz sur cette page : ftp://ftp.gtk.org/pub/glib/2.12/), et tente de les compiler…
Mais ça foire dés le configure :
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
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
florian@florian:~/Development/Cross/glib-2.12.13$ ./autogen.sh --host=i586-mingw32msvc
configure: WARNING: If you wanted to set the --build type, don't use --host.
    If a cross compiler is detected then cross compile mode will be used.
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for gawk... no
checking for mawk... mawk
checking whether make sets $(MAKE)... yes
checking for i586-mingw32msvc-strip... i586-mingw32msvc-strip
checking whether to enable maintainer-specific portions of Makefiles... yes
checking build system type... i686-pc-linux-gnu
checking host system type... i586-pc-mingw32msvc
checking for the BeOS... no
checking for Win32... yes
checking for i586-mingw32msvc-windres... i586-mingw32msvc-windres
checking for i586-mingw32msvc-nm... i586-mingw32msvc-nm
checking for i586-mingw32msvc-ranlib... i586-mingw32msvc-ranlib
checking for lib.exe... no
checking whether to enable garbage collector friendliness... no
checking whether to disable memory pools... no
configure: WARNING: Disabling static library build, must build as DLL on Windows.
checking for i586-mingw32msvc-gcc... i586-mingw32msvc-gcc
checking for C compiler default output file name... a.exe
checking whether the C compiler works... Invoking /usr/lib/wine/wine.bin ./a.exe ...
yes
checking whether we are cross compiling... no
checking for suffix of executables... .exe
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether i586-mingw32msvc-gcc accepts -g... yes
checking for i586-mingw32msvc-gcc option to accept ISO C89... none needed
checking for style of include used by make... GNU
checking dependency style of i586-mingw32msvc-gcc... gcc3
checking for c++... c++
checking whether we are using the GNU C++ compiler... yes
checking whether c++ accepts -g... yes
checking dependency style of c++... gcc3
checking for i586-mingw32msvc-gcc option to accept ANSI C... none needed
checking for a BSD-compatible install... /usr/bin/install -c
checking for special C compiler options needed for large files... no
checking for _FILE_OFFSET_BITS value needed for large files... unknown
checking for _LARGE_FILES value needed for large files... unknown
checking for pkg-config... /usr/bin/pkg-config
checking how to get MSVC-compatible struct packing... -mms-bitfields
checking for gawk... (cached) mawk
checking for perl5... no
checking for perl... perl
checking for indent... no
checking for perl... /usr/bin/perl
checking for iconv_open... no
checking for libiconv_open in -liconv... no
checking for iconv_open in -liconv... no
configure: error: *** No iconv() implementation found in C library or libiconv

Bref, tout ça pour dire que j'ai cherché comme un fou, et que rien n'y fait. Vous êtes donc mon dernier recours !
Où est-ce que j'ai faux, dîtes-moi ?