begin process at 2012 05 29 06:12:32
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Windows

 > 

Multimédia

 > 

[ffmpeg / C++] Problème de linkage


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

[ffmpeg / C++] Problème de linkage

jeudi 3 décembre 2009 à 23:57:29 | [ffmpeg / C++] Problème de linkage

jeje6_3

Bonsoir,
Je souhaite utiliser la lib ffmpeg dans une application C++ avec MSYS/MinGW, dont voici le code :
Code C/C++ :
#include <iostream>

#include <libavcodec/avcodec.h>
#include <libavformat/avformat.h>

int main(void)
{
    av_register_all();
    printf("Hello world\n");
    return 0;
}



j'ai compilé ffmpeg puis l'ai installé, mais lorsque je tente de compiler ce code avec la commande :

g++ test.cpp -I/local/include/ -L/local/lib -lavformat -lavcodec -lz -lavutil -lm



j'obtiens l'erreur suivante :

C:/DOCUME~1/jeje/LOCALS~1/Temp/ccm1EQsi.o:test.cpp:(.text+0x2b): r&#9500;®f&#9500;®rence ind&#9500;®finie vers &#9516;&#189; av_register_all() &#9516;&#9559;
collect2: ld returned 1 exit status




J'ai essayé de faire ce qu'il y a sur cette page : [ Lien ] mais cela plante au moment du linkage

Pour la compilation et l'installation de ffmpeg, je me suis inspiré de cette page : [ Lien ]


Voila, j'espère que quelqu'un pourra m'aider

Merci d'avance
vendredi 4 décembre 2009 à 08:34:17 | Re : [ffmpeg / C++] Problème de linkage

fregolo52

Membre Club
Salut,


je n'ai pas l'habitude de ce genre d'environnement. Mais es-tu sûre que tes libav* sont dans /lib ou /local/lib ? Et pas plutot dans un répertoire style /local/lib/libav*
vendredi 4 décembre 2009 à 14:46:19 | Re : [ffmpeg / C++] Problème de linkage

jeje6_3

salut fregolo,
Non, elles se trouvent bien dans ce dossier, et puis si elles n'avaient pas été trouvées, j'aurais eu un autre message d'erreur du genre :

/usr/bin/ld: cannot find -l<libmanquante>
collect2: ld returned 1 exit status



Le pire c'est que je vien d'essayer la même chose sous Linux ( Kubuntu 9.10 ), j'obtiens les mêmes erreurs et aucune doc ne parle de ça

D'autre idées ? Merci d'avance
vendredi 4 décembre 2009 à 15:47:37 | Re : [ffmpeg / C++] Problème de linkage

fregolo52

Membre Club
Bon bah restons sur ubuntu pour les tests !!

Essaie de dumper les lib pour voir ce qu'elles ont dans le ventre et voir où serait av_register_all :

nm nomdelalib

Euh je crois que c'est nm pour avoir ça.
vendredi 4 décembre 2009 à 16:11:37 | Re : [ffmpeg / C++] Problème de linkage

jeje6_3

Arf, je crois que j'ai un problème :

nm /usr/lib/libavcodec.so.52
nm: /usr/lib/libavcodec.so.52: no symbols
jeje@desktop:~$ nm /usr/lib/libavformat.so.52
nm: /usr/lib/libavformat.so.52: no symbols



C'est normal, ça ? (il s'agit de libs que j'ai créé à l'aide du svn, je vais tenter de les récupérer depuis les dépots Ubuntu)

Le problème étant que si je réussi à le faire marcher sous Linux, il faudra que je le fasse fonctionner sous Windows, donc si quelqu'un trouve une doc que je n'aurais pas vu, il faudrai me la montrer.

Des idées ?

vendredi 4 décembre 2009 à 16:45:12 | Re : [ffmpeg / C++] Problème de linkage

jeje6_3

Désolé pour le double post mais je ne sais pas comment éditer mon précédent:
Je suis de retour sous Windows et voici le resultat de :

$ nm /local/lib/libavformat.a | grep av_register_all
00000000 T _av_register_all



Donc cela devrai marcher, non ?

Merci d'avance
mardi 8 décembre 2009 à 15:18:14 | Re : [ffmpeg / C++] Problème de linkage

jeje6_3

Personne n'aurai une idée ?
vendredi 5 février 2010 à 19:15:32 | Re : [ffmpeg / C++] Problème de linkage

jeje6_3

Bonjour a tous !

Ça y est ! j'ai (enfin) trouvé d'où venait le problème.

Pour info :

référence indéfinie vers '' av_register_all() ''

vient du fait que ffmpeg est une bibliothèque écrite pour le C mais n'est pas compatible avec le C++, sauf si on l'écrit comme ça :
Code C/C++ :
#include <iostream>
using namespace std;

extern "C"
{
#include <libavcodec/avcodec.h>
#include <libavformat/avformat.h>
}

int main(...


Voila déjà le problème résolu... ou pas. En effet une fois que l'on à réglé ce problème il en vient plein d'autres. J'écris plein parceque tous les fichiers .a de ffmpeg "râlent" à propos de fichiers .c qui ne font pas leur boulo.

La aussi le problème est simple mais aussi idiot : ffmpeg était compilé en static ! Une fois recompilé en dynamique, tout va bien !

NB : pour le compiler en dynamique, suivez ce tuto : Ici

Voila, j'espère que ces infos serviront à quelqu'un

Jeje


Cette discussion est classée dans : page, code, include, quote, ffmpeg


Répondre à ce message

Sujets en rapport avec ce message

C++ Standard ? [ par mmuller57 ] Voila, je viens d'aller sur le site de Bjarne Stroustrup et j'y ai pris un exemple de code source en C++ standard :#include#includeusing namespace std Telecharger une page HTML avec les photos [ par LordDaedalus ] BonjourJe cherche à télécharger une page HTML avec le code source et les photos un peu comme la fonction "Enregistrer sous " de Internet Explorer.J'ai Difference [ par xionoxid ] C'est koi la difference entre time (0) et time (NULL) les 2 font des nbr aleatoire !??#include #include #i Code source d'un exploreur de page HTML [ par Aurelien62fr ] Bonjour je suis en train de develloper (essayer) un systeme d'exploitation en HTML. Mais j'ai besoin maintenant d'un programme pour le faire tourner, Petit probleme de code en C sur Linux !! [ par UncleShu ] Je voudrais créer un fichier dans le réperoire personnel d'un utilisateur mais mon code ne marche pas !!#include #include #include #define DIR $HOM Problème de lecture [ par Hades53 ] Voila, j'ai fait un code pour lire des fichiers qui marche, mais il y a un petit problème avec la dernière ligne du fichier qu'on veut lire:si la dern #include circulaires [ par abubu38 ] Salut, J'ai un gros probleme de compilation au niveau des .h :fichier f1.h : #include f2.h class A { // définition nécéssitant la classe Erreur DeviceIoControl ??? pk acces refusé ? [ par akk ] Bonjour,Voila lorsque j'execute ce code :(on passe le nom du lecteur en parametre exemple : main C)#include #include <iostre c++ et mysql [ par toma2194 ] bonsoir,je developpe avec visual studio .net et je souhaite réaliser une appli qui se connecte à une base mysql sur un serveur distant.*j'ai récupéré GetAsyncKeyState [ par sebleboss2002 ] Bon, c'est encore moi, ce coup-ci, j'ai trouvé (plus ou moins) comment faire ce que je voulais :#include #include <br


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,499 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales