Bonjour,
Je suis entrain de porter OBT une bibliotheque qui implemente simplement des singleton, des plugins, des tracers etc... sous MINGW.
Cette bibiliotheque et ses tests marchent tres bien sous linux et visual express. Mais là sous mingw avec msys j'ai des problemes à l'execution
Et j'ai un probleme au niveau des symboles exportés.
Je dispose d'un programme de test, qui dans un programme principal ajoute un service au serviceManager puis charge un plugin(PI) et le plugin demande au serviceManager de recuperer le service.
Or la dans le PI, le serviceManager ne trouve pas le service.
Donc on dirait que le singleton de serviceManager s'est mal exporté d'ou la non existence dans le PI du service.
Cette exemple marche bien sous visual et linux.
Donc je suppose qu'il me manque une option de compile ou de link.
à la compile typiquement j'ai çà :
/c/msys/1.0/bin/g++ -DOBT_EXPORTS -g -Wall -I/C/msys/1.0/home/obt/build/Source -I/C/ms
ys/1.0/home/obt/Source/. -DMINGW -DTIXML_USE_STL -DOBT_EXPORTS -o Source/CMakeFiles/OBT.
dir/OBTIService.obj -c /C/msys/1.0/home/obt/Source/OBTIService.cpp
et au link :
cd /C/msys/1.0/home/obt/build/Tests && /c/msys/1.0/bin/g++ -g -Wall "CMakeFiles/OBT_
Tests.dir/main.obj" "CMakeFiles/OBT_Tests.dir/PluginInformationTest.obj" "CMakeFiles/OBT_T
ests.dir/PluginTest.obj" "CMakeFiles/OBT_Tests.dir/ServiceManagerTest.obj" -o ../../Test
s/bin/OBT_Tests.exe -Wl,--major-image-version,0,--minor-image-version,0 -L/C/msys/1.0/hom
e/obt/lib -L/C/msys/1.0/home/install/cppunitBin/lib -lcppunit -lOBT_d
j'ai aussi testé avec -Wl,--enable-auto-import -Wl,--output-def,export.def -Wl,--add-stdcall-alias" mais ca change rien
Au niveau des symboles, j'ai generé le .def et je vois bien qu'il y a le singleton du serviceManager dedans :
EXPORTS
OBT_TRACE_CRITICAL @1 DATA
OBT_TRACE_DEBUG @2 DATA
OBT_TRACE_ERROR @3 DATA
OBT_TRACE_INFO @4 DATA
OBT_TRACE_NOTICE @5 DATA
OBT_TRACE_WARNING @6 DATA
ZZN3OBT9SingletonINS_14ServiceManagerEE6createEvE11theInstance @7 DATA
...
Bref ...
Au cas ou les sources patchée pour mingw avec l'exemple est dispo ici :
https://www.yousendit.com/transfer.php?action=batch_download(...)
Mais il faut cmake et ccpunit pour compiler le tout.
Pour compiler sous msys :
cd obt
rm -rf build
mkdir build
cd build
export CPPUNIT_HOME=/home/install/cppunitBin
cmake .. -DCMAKE_INSTALL_PREFIX:PATH=/e/mingw/soft -DCMAKE_BUILD_TYPE=Debug -G "MSYS Makefiles" -DMINGW=MINGW
make
make install
Merci !
# Paramètre
Posté par phoenix (site web personnel) . Évalué à 1.
LFLAGS = -no-undefined -enable-runtime-pseudo-reloc
[^] # Re: Paramètre
Posté par xabi . Évalué à 1.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.