URL: https://linuxfr.org/forums/programmation-c/posts/mingw-et-export-des-symboles Title: Mingw Et Export des symboles Authors: xabi Date: 2009年09月10日T18:15:28+02:00 Tags: Score: 0 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(...)](https://www.yousendit.com/transfer.php?action=batch_download&send_id=737907159&email=1af59bacaa2253e24bf164cbf5ea395d) 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 !