Salut,

J'ai un programme écrit en C avec GTK+. J'utilise des bibliothèques partagées comme plugins pour ajouter des fonctionnalités au programme. Jusqu'à présent tous mes plugins étaient écrit en C et je n'avais pas de problème.
Cependant, dernièrement, un utilisateur m'a envoyé un plugin écrit en C++ (avec le extern "C" {}). J'arrive à compiler le plugin sous Linux et Windows sans problème avec g++. Par contre je n'arrive à le charger seulement sous Windows. Sous Linux j'ai le message d'erreur suivant :
undefined symbol : __out_of_range_FPCc__.

Quelqu'un a-t-il déjà rencontré ce problème?? Qu'est ce que ce FPC?? Je mets ci dessous mon Makefile.win (pour Windows) et mon Makefile.am (pour Linux). Je pense que c'est un problème de compilation, et qu'il doit manquer une option de linkage sous Linux...

Makefile.win
CC = gcc.exe
WINDRES = windres.exe
RES =
AVI_OBJ = avi.o
DESCRIPT_ION_OBJ = descript_ion.o
FILE_ID_DIZ_OBJ = file_id_diz.o
HTML_OBJ = html.o
MP3_OBJ = mp3.o
OBJ = $(AVI_OBJ) $(DESCRIPT_ION_OBJ) $(FILE_ID_DIZ_OBJ) $(HTML_OBJ) $(MP3_OBJ) $(RES)
LIBS = -L"C:\GTK4WIN\lib" -L"C:\GTK4WIN\extra\lib" -mno-cygwin -fnative-struct -mno-cygwin -fnative-struct -lmingwex -lgtk -lglib-2.0 -lgdk -lgmodule-2.0 --export-all-symbols --add-stdcall-alias -lmingwex -lcrtdll -lz -lws2_32 -lregex -lintl
INCS = -I"D:\Dev-C++\include" -I"D:\Dev-C++\extra\include" -I"..\.."
AVI_BIN = libgwplugindescriptionavi.dll
DESCRIPT_ION_BIN = libgwplugindescriptiondescript_ion.dll
FILE_ID_DIZ_BIN = libgwplugindescriptionfile_id_diz.dll
HTML_BIN = libgwplugindescriptionhtml.dll
MP3_BIN = libgwplugindescriptionmp3.dll
BIN = $(AVI_BIN) $(DESCRIPT_ION_BIN) $(FILE_ID_DIZ_BIN) $(HTML_BIN) $(MP3_BIN)
CFLAGS = $(INCS) -I"C:\GTK4WIN\include" -I"C:\GTK4WIN\extra\include" -I"C:\GTK4WIN\include\gtk" -fnative-struct -DHAVE_CONFIG_H -DOS_WIN32 -s -mwindows

.PHONY: clean

all: $(BIN)

clean:
rm -f $(OBJ) $(BIN)

DLLWRAP=dllwrap.exe
AVI_EXPFILE=liblibgwplugindescriptionavi.exp
AVI_DEFFILE=liblibgwplugindescriptionavi.def
AVI_STATICLIB=liblibgwplugindescriptionavi.a
DESCRIPT_ION_EXPFILE=liblibgwplugindescriptiondescript_ion.exp
DESCRIPT_ION_DEFFILE=liblibgwplugindescriptiondescript_ion.def
DESCRIPT_ION_STATICLIB=liblibgwplugindescriptiondescript_ion.a
FILE_ID_DIZ_EXPFILE=liblibgwplugindescriptionfile_id_diz.exp
FILE_ID_DIZ_DEFFILE=liblibgwplugindescriptionfile_id_diz.def
FILE_ID_DIZ_STATICLIB=liblibgwplugindescriptionfile_id_diz.a
HTML_EXPFILE=liblibgwplugindescriptionhtml.exp
HTML_DEFFILE=liblibgwplugindescriptionhtml.def
HTML_STATICLIB=liblibgwplugindescriptionhtml.a
MP3_EXPFILE=liblibgwplugindescriptionmp3.exp
MP3_DEFFILE=liblibgwplugindescriptionmp3.def
MP3_STATICLIB=liblibgwplugindescriptionmp3.a

$(BIN): $(OBJ)
$(DLLWRAP) --driver-name gcc --output-exp $(AVI_EXPFILE) --output-def $(AVI_DEFFILE) --implib $(AVI_STATICLIB) -o $(AVI_BIN) $(AVI_OBJ) ..\..\tools\libgwtools.a ..\..\data\libgwdata.a ..\..\res\libgwres.a $(LIBS) $(CFLAGS)
$(DLLWRAP) --driver-name gcc --output-exp $(DESCRIPT_ION_EXPFILE) --output-def $(DESCRIPT_ION_DEFFILE) --implib $(DESCRIPT_ION_STATICLIB) -o $(DESCRIPT_ION_BIN) $(DESCRIPT_ION_OBJ) ..\..\tools\libgwtools.a ..\..\data\libgwdata.a ..\..\res\libgwres.a $(LIBS) $(CFLAGS)
$(DLLWRAP) --driver-name gcc --output-exp $(FILE_ID_DIZ_EXPFILE) --output-def $(FILE_ID_DIZ_DEFFILE) --implib $(FILE_ID_DIZ_STATICLIB) -o $(FILE_ID_DIZ_BIN) $(FILE_ID_DIZ_OBJ) ..\..\tools\libgwtools.a ..\..\data\libgwdata.a ..\..\res\libgwres.a $(LIBS) $(CFLAGS)
$(DLLWRAP) --driver-name gcc --output-exp $(HTML_EXPFILE) --output-def $(HTML_DEFFILE) --implib $(HTML_STATICLIB) -o $(HTML_BIN) $(HTML_OBJ) ..\..\tools\libgwtools.a ..\..\data\libgwdata.a ..\..\res\libgwres.a $(LIBS) $(CFLAGS)
$(DLLWRAP) --driver-name gcc --output-exp $(MP3_EXPFILE) --output-def $(MP3_DEFFILE) --implib $(MP3_STATICLIB) -o $(MP3_BIN) $(MP3_OBJ) ..\..\tools\libgwtools.a ..\..\data\libgwdata.a ..\..\res\libgwres.a $(LIBS) $(CFLAGS)

avi.o: avi.c
$(CC) -c avi.c -o avi.o $(CFLAGS)

descript_ion.o: descript_ion.c
$(CC) -c descript_ion.c -o descript_ion.o $(CFLAGS)

file_id_diz.o: file_id_diz.c
$(CC) -c file_id_diz.c -o file_id_diz.o $(CFLAGS)

html.o: html.c
$(CC) -c html.c -o html.o $(CFLAGS)

mp3.o: mp3.c
$(CC) -c mp3.c -o mp3.o $(CFLAGS)
Makefile.am
libdir = $(exec_prefix)/share/${PACKAGE}/plugins/descr

lib_LTLIBRARIES = libgwplugindescriptionavi.la \
libgwplugindescriptiondescript_ion.la \
libgwplugindescriptionfile_id_diz.la \
libgwplugindescriptionhtml.la \
libgwplugindescriptionmp3.la

libgwplugindescriptionavi_la_LDFLAGS = 'glib-config --cflags gmodule' -fPIC -version-info 1:0:0
libgwplugindescriptiondescript_ion_la_LDFLAGS = 'glib-config --cflags gmodule' -fPIC -version-info 1:0:0
libgwplugindescriptionfile_id_diz_la_LDFLAGS = 'glib-config --cflags gmodule' -fPIC -version-info 1:0:0
libgwplugindescriptionhtml_la_LDFLAGS = 'glib-config --cflags gmodule' -fPIC -version-info 1:0:0
libgwplugindescriptionmp3_la_LDFLAGS = 'glib-config --cflags gmodule' -fPIC -version-info 1:0:0

libgwplugindescriptionavi_la_SOURCES = avi.c
libgwplugindescriptiondescript_ion_la_SOURCES = descript_ion.c
libgwplugindescriptionfile_id_diz_la_SOURCES = file_id_diz.c
libgwplugindescriptionhtml_la_SOURCES = html.c
libgwplugindescriptionmp3_la_SOURCES = mp3.c

INCLUDES = \
-I$(top_srcdir)/intl \
-I$(top_srcdir)/src \
@GTK_CFLAGS@

libgwplugindescriptionavi_la_IBADD = \
@top_srcdir@/src/tools/libgwtools.a
libgwplugindescriptiondescript_ion_la_IBADD = \
@top_srcdir@/src/tools/libgwtools.a
libgwplugindescriptionfile_id_diz_la_IBADD = \
@top_srcdir@/src/tools/libgwtools.a
libgwplugindescriptionhtml_la_IBADD = \
@top_srcdir@/src/tools/libgwtools.a
libgwplugindescriptionmp3_la_IBADD = \
@top_srcdir@/src/tools/libgwtools.a