Lier une .dll / .lib avec MinGW sous Win7(VS2010)
Fermé
sylv_brl
Messages postés
21
Date d'inscription
lundi 24 juin 2013
Statut
Membre
Dernière intervention
16 septembre 2013
-
Modifié par sylv_brl le 11/09/2013 à 15:55
sylv_brl Messages postés 21 Date d'inscription lundi 24 juin 2013 Statut Membre Dernière intervention 16 septembre 2013 - 16 sept. 2013 à 08:36
sylv_brl Messages postés 21 Date d'inscription lundi 24 juin 2013 Statut Membre Dernière intervention 16 septembre 2013 - 16 sept. 2013 à 08:36
A voir également:
- Lier une .dll / .lib avec MinGW sous Win7(VS2010)
- Msvcr110.dll est introuvable ✓ - Forum Windows 10
- Xinput1_3.dll ✓ - Forum jeux PC/Mac
- Ads.fiancetrack(2).dll - Forum Windows 10
- Msvcr110.dll wampserver ✓ - Forum Logiciels
- Msvcp140-dll origin ✓ - Forum Windows 10
4 réponses
Char Snipeur
Messages postés
9688
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
2 octobre 2020
1 329
11 sept. 2013 à 16:46
11 sept. 2013 à 16:46
c:/mingcwc/::b//inmmi/inngg.ww.//bb/iinnli//b../..gcc///lliibbmin//gw3gg2cccc///4m.im6ni.gn2wg3w23/2/./4..46..6/2.2.//..../././.../...//.../..m/i/ng.w.32..///bm
imininnggw/w3322ld/./exbebiinn:// lldcd.a.enexnxeoet:: fciacnnadnnonto t - fiflnirdnadb b i-tm-qlral
baibtbmiqtmq
c
ollcecocoltll2le:ec ctt2l:2d : al ldrd ea t aor uerrtenotéuo ru1nr énc éo1 d 1ec ocddo'edé etd 'adté'é ttadat' ted x'dé'ecxeuéxtcéicuoutnti
oonn
C'est quoi ce charabia ?
ça ne devrait pas être -lrabbitmq.1 dans la ligne d'édition des liens de make ?
imininnggw/w3322ld/./exbebiinn:// lldcd.a.enexnxeoet:: fciacnnadnnonto t - fiflnirdnadb b i-tm-qlral
baibtbmiqtmq
c
ollcecocoltll2le:ec ctt2l:2d : al ldrd ea t aor uerrtenotéuo ru1nr énc éo1 d 1ec ocddo'edé etd 'adté'é ttadat' ted x'dé'ecxeuéxtcéicuoutnti
oonn
C'est quoi ce charabia ?
ça ne devrait pas être -lrabbitmq.1 dans la ligne d'édition des liens de make ?
Char Snipeur
Messages postés
9688
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
2 octobre 2020
1 329
12 sept. 2013 à 08:51
12 sept. 2013 à 08:51
Je comprend qu'il râle. C'est quoi ce x64 qui traine ? si c'est pour spécifier du 64 bit, avec gcc, c'est "-m64"
attention de ne pas mélanger le compilateur de visual et celui de gnu.
attention de ne pas mélanger le compilateur de visual et celui de gnu.
sylv_brl
Messages postés
21
Date d'inscription
lundi 24 juin 2013
Statut
Membre
Dernière intervention
16 septembre 2013
12 sept. 2013 à 10:08
12 sept. 2013 à 10:08
Ok, finalement il fallait que j'ajoute le prefix 'lib' à mes .lib .dll 'rabbitmq' (en retirant le '.1' au passage et affichant les extensions dans les Options Dossiers Windows). J'avais déjà vu ça et essayé, mais j'avais d'autres erreurs à ce moment là... Comme mon MakeFile est regénéré par le .bat pendant mes tests, j'avais perdu cette modification depuis un moment. Pour l'instant, il ne crie plus, j'espère donc que la compilation a fonctionné.
sylv_brl
Messages postés
21
Date d'inscription
lundi 24 juin 2013
Statut
Membre
Dernière intervention
16 septembre 2013
13 sept. 2013 à 11:32
13 sept. 2013 à 11:32
J'ai maintenant, toujours dans le contexte du sujet, un problème pour lier la lib en ".a" générée à mon projet VS2010. Lors de la compilation sous VS2010, j'obtiens une erreur "impossible d'ouvrir libamqpcpp.a.lib"
-> en renommant directement l'extension ".a" par ".lib" j'obtiens de la même manière "impossible d'ouvrir libamqpcpp.lib" (cette technique fonctionne a priori avec certaines lib compilées en C, mais ici c'est C++)
-> en suivant la réponse de mloskot ici : https://stackoverflow.com/questions/2096519/from-mingw-static-library-a-to-visual-studio-static-library-lib , j'obtiens de erreurs "symboles non reconnus"
Voir ma modif ici avec ajout libamqpcpp.a et libgcc.a : http://picpaste.com/test_.a_lib_MSVC_2010-pRP1QAxH.JPG
-> en essayant de convertir la lib ".a" en ".lib" via .dll et .def comme ici : http://www.mingw.org/wiki/MSVC_and_MinGW_DLLs
mais avec g++ au lieu de gcc j'obtiens
Quelqu'un sait-il comment je peux faire exactement pour utiliser une lib ".a" obtenu par MinGW(g++) dans un projet MSVC ? Ou avec une alternative ?
-> en renommant directement l'extension ".a" par ".lib" j'obtiens de la même manière "impossible d'ouvrir libamqpcpp.lib" (cette technique fonctionne a priori avec certaines lib compilées en C, mais ici c'est C++)
-> en suivant la réponse de mloskot ici : https://stackoverflow.com/questions/2096519/from-mingw-static-library-a-to-visual-studio-static-library-lib , j'obtiens de erreurs "symboles non reconnus"
Voir ma modif ici avec ajout libamqpcpp.a et libgcc.a : http://picpaste.com/test_.a_lib_MSVC_2010-pRP1QAxH.JPG
-> en essayant de convertir la lib ".a" en ".lib" via .dll et .def comme ici : http://www.mingw.org/wiki/MSVC_and_MinGW_DLLs
mais avec g++ au lieu de gcc j'obtiens
c:\...\deps-vs2010-x64\amqp\amqpcpp>g++ -shared -o test.dll src/amqp.cpp -Wl, --output-def,test.dll, --out-implib,libamqpcpp.a
g++: erreur: unrecognized option '--output-def,lab.dll,'
g++: erreur: unrecognized option '--out-implib,libamqpcpp.a'
Quelqu'un sait-il comment je peux faire exactement pour utiliser une lib ".a" obtenu par MinGW(g++) dans un projet MSVC ? Ou avec une alternative ?
Char Snipeur
Messages postés
9688
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
2 octobre 2020
1 329
13 sept. 2013 à 13:57
13 sept. 2013 à 13:57
Je ne suis même pas sur que ça soit possible, il me semble que les deux compilateur utilisent des en têtes différents pour les fichiers objets.
Pourquoi ne pas tout compiler avec MinGW ?
Pourquoi ne pas tout compiler avec MinGW ?
Char Snipeur
Messages postés
9688
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
2 octobre 2020
1 329
13 sept. 2013 à 13:58
13 sept. 2013 à 13:58
Je viens de regarder ton lien, c'est assez complexe de mélanger les deux. à éviter au maximum.
sylv_brl
Messages postés
21
Date d'inscription
lundi 24 juin 2013
Statut
Membre
Dernière intervention
16 septembre 2013
Modifié par sylv_brl le 13/09/2013 à 14:18
Modifié par sylv_brl le 13/09/2013 à 14:18
J'aimerais réussir ça car il s'agit en fait d'un projet avec énormément de dépendances et scripts automatisés (bcp trop gros pour moi qui débute sûrement, ce qui est aussi un autre problème, mais c'est le boulot et ça reste intéressant). J'aimerais donc au minimum changer le processus de compilation. Je n'ai pas fais le module complémentaire 'Live3DModule' qu'on essaye actuellement d'ajouter (visible dans la hiérarchie des projets sur l'image en lien çi-dessus), j'arrive en cours de route, toutes ces complications m'amenant ici.
Mais si il n'y a pas de solutions rapidement, comme tu le dis, je vais surement devoir trouver comment compiler un ensemble plus grand avec MinGW ou l'inverse avec compilateur Win, et si possible rajouter cet ensemble dans le projet Realxtend... je ne sais pas trop encore comment mais ça viendra.
Pour l'instant j'ai juste un peu changé ma ligne de compilation (solution de mloskot) avec ce résultat :
Mais si il n'y a pas de solutions rapidement, comme tu le dis, je vais surement devoir trouver comment compiler un ensemble plus grand avec MinGW ou l'inverse avec compilateur Win, et si possible rajouter cet ensemble dans le projet Realxtend... je ne sais pas trop encore comment mais ça viendra.
Pour l'instant j'ai juste un peu changé ma ligne de compilation (solution de mloskot) avec ce résultat :
c:\Users\Sylvain\naali-3dlive\deps-vs2010-x64\amqp\amqpcpp>g++ -shared -o test.dll src/amqp.cpp -Wl, -output-def=test.dll, -out-implib=libamqpcpp.a -Iinclude -Isrc -IC:/Users/Sylvain/naali-3dlive/deps-vs2010-x64/amqp/rabbitmq-c-rabbitmq-c-v0.3.0/librabbitmq
c:/mingw/bin/../lib/gcc/mingw32/4.6.2/../../../../mingw32/bin/ld.exe: cannot find : Invalid argument
collect2: ld a retourné 1 code d'état d'exécution
Char Snipeur
Messages postés
9688
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
2 octobre 2020
1 329
13 sept. 2013 à 14:41
13 sept. 2013 à 14:41
Je crois qu'il n'y a pas d'espace entre la virgule et le -out...
sylv_brl
Messages postés
21
Date d'inscription
lundi 24 juin 2013
Statut
Membre
Dernière intervention
16 septembre 2013
Modifié par sylv_brl le 13/09/2013 à 14:56
Modifié par sylv_brl le 13/09/2013 à 14:56
Oui ça semble mieux comme ça (...enfin ça change le résultat de moins). Je vois qu'il utilise des fichiers temporaires dans /temp pour compiler, je me renseignes si il n'y a pas moyen d'éviter ça :
c:\Users\Sylvain\naali-3dlive\deps-vs2010-x64\amqp\amqpcpp>g++ -shared -o test.dll src/amqp.cpp -Wl,-output-def=test.dll,-out-implib=libamqpcpp.a -Iinclude -Isrc -IC:\Users\Sylvain\naali-3dlive\deps-vs2010-x64\amqp\rabbitmq-c-rabbitmq-c-v0.3.0\librabbitmq
Creating library file: libamqpcpp.a
C:\Users\Sylvain\AppData\Local\Temp\ccXIbST0.o:amqp.cpp:(.text+0x281): undefined reference to 'amqp_destroy_connection'
C:\Users\Sylvain\AppData\Local\Temp\ccXIbST0.o:amqp.cpp:(.text+0xea5): undefined reference to 'amqp_new_connection'
C:\Users\Sylvain\AppData\Local\Temp\ccXIbST0.o:amqp.cpp:(.text+0xecc): undefined reference to 'amqp_open_socket'
C:\Users\Sylvain\AppData\Local\Temp\ccXIbST0.o:amqp.cpp:(.text+0xeec): undefined reference to 'amqp_destroy_connection'
C:\Users\Sylvain\AppData\Local\Temp\ccXIbST0.o:amqp.cpp:(.text+0xf2e): undefined reference to 'AMQPException::AMQPException(std::string)'
C:\Users\Sylvain\AppData\Local\Temp\ccXIbST0.o:amqp.cpp:(.text+0xf75): undefined reference to 'amqp_set_sockfd'
C:\Users\Sylvain\AppData\Local\Temp\ccXIbST0.o:amqp.cpp:(.text+0x1023): undefined reference to 'amqp_login'
C:\Users\Sylvain\AppData\Local\Temp\ccXIbST0.o:amqp.cpp:(.text+0x103c): undefined reference to 'amqp_destroy_connection'
C:\Users\Sylvain\AppData\Local\Temp\ccXIbST0.o:amqp.cpp:(.text+0x1059): undefined reference to 'AMQPException::AMQPException(amqp_rpc_reply_t_*)'
C:\Users\Sylvain\AppData\Local\Temp\ccXIbST0.o:amqp.cpp:(.text+0x10cf): undefined reference to 'AMQPExchange::AMQPExchange(amqp_connection_state_t_**, int)'
C:\Users\Sylvain\AppData\Local\Temp\ccXIbST0.o:amqp.cpp:(.text+0x1166): undefined reference to 'AMQPExchange::AMQPExchange(amqp_connection_state_t_**, int, std:
:string)'
C:\Users\Sylvain\AppData\Local\Temp\ccXIbST0.o:amqp.cpp:(.text+0x11ff): undefined reference to 'AMQPQueue::AMQPQueue(amqp_connection_state_t_**, int)'
C:\Users\Sylvain\AppData\Local\Temp\ccXIbST0.o:amqp.cpp:(.text+0x1296): undefined reference to 'AMQPQueue::AMQPQueue(amqp_connection_state_t_**, int, std::strin
g)'
collect2: ld a retourné 1 code d'état d'exécution
Modifié par sylv_brl le 12/09/2013 à 08:31