Forum Programmation.c++ Mingw Et Export des symboles

Posté par  .
Étiquettes : aucune
0
10
sept.
2009
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  (site web personnel) . Évalué à 1.

    Pour avoir le même export que sous Linux (soit tout, sans utilisation de __decl_export...), j'utilise les paramètres suivant sur le linker :

    LFLAGS = -no-undefined -enable-runtime-pseudo-reloc
    • [^] # Re: Paramètre

      Posté par  . Évalué à 1.

      Et non helas meme probleme, mais merci

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.