IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

erreur codeBlocks : undefined reference


Sujet :

C++

  1. #1
    Futur Membre du Club
    Homme Profil pro
    doctorant
    Inscrit en
    Février 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : doctorant

    Informations forums :
    Inscription : Février 2013
    Messages : 9
    Points : 6
    Points
    6
    Par défaut erreur codeBlocks : undefined reference
    BONJOUR?
    J'ai besoin d'aide...
    Je tente d'ecrire un programme à partir de l'API fourni avec la camera.
    ci dessous le tout premier bout de code que j'ai ecrit.
    ça ne marche pas pour l'instant, j'ai essaiyé de comprendre mais rien pour l'instant.
    Alors si vous aviez une idée vos suggestions sont les bienvenues..

    Merci d'avance,

    Ps : fichier erreur en piece jointe.

    momo
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    /*
    	This example describes the FIRST STEPS of handling Baumer-GAPI SDK.
    	The given source code applies to handling one system, one camera and one image.
    	Please see "Baumer-GAPI SDK Programmer's Guide" chapter 4.
    */
     
    #include "bgapi.hpp"
    #include <stdlib.h>
    #include <stdio.h>
    #include <conio.h>
     
     
     
    int main()
    {
    	//DECLARATION
    	//===========
     
    	//Variables for first picture
    	int system_count=0; ;
    	int camera_count = 0;
    	BGAPI::System * pSystem = NULL;
    	BGAPI::Camera * pCamera = NULL;
    	BGAPI::Image * pImage = NULL;
     
    BGAPI_RESULT res = BGAPI_RESULT_FAIL;
    	//COUNTING AVAILABLE SYSTEMS
     
    	res=BGAPI::countSystems(&system_count);
     
    //res =system_count;
    	if( res != BGAPI_RESULT_OK )
    	{
    		printf("Count system object errorcode: %d system_count: %d\n", res, system_count);
    		return 0;
    	}
    	printf("4.1.2.  Detected systems: %d\n", system_count);
    }
    Fichiers attachés Fichiers attachés

  2. #2
    Membre expert
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1 415
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 415
    Points : 3 159
    Points
    3 159
    Par défaut
    C'est un problème de link. Dans la configuration de ton projet, tu dois lui rajouter les infos pour linker sur la bibliothèque de pilotage de ta caméra. Je ne sais plus en détail comment on fait dans code::blocks mais dans la config de ton projet tu dois avoir une section "Linker" ou "Editeur de lien".

    Si ta bibliothèque est une DLL (ce qui est à mon avis le cas), ça va pas le faire avec MinGW. Il vaudra mieux dans ce cas installer Visual Studio express (quitte à utiliser son compilateur dans code::blocks)

  3. #3
    Futur Membre du Club
    Homme Profil pro
    doctorant
    Inscrit en
    Février 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : doctorant

    Informations forums :
    Inscription : Février 2013
    Messages : 9
    Points : 6
    Points
    6
    Par défaut pas faux
    Citation Envoyé par jblecanard Voir le message
    C'est un problème de link. Dans la configuration de ton projet, tu dois lui rajouter les infos pour linker sur la bibliothèque de pilotage de ta caméra. Je ne sais plus en détail comment on fait dans code::blocks mais dans la config de ton projet tu dois avoir une section "Linker" ou "Editeur de lien".

    Si ta bibliothèque est une DLL (ce qui est à mon avis le cas), ça va pas le faire avec MinGW. Il vaudra mieux dans ce cas installer Visual Studio express (quitte à utiliser son compilateur dans code::blocks)
    Effectivement c'est ce que je pensais aussi, du coup j'ai tenté de lui indiquer les chemins dll de plusieurs manière mais toujours rien..

    Je vais voir la configurations Migwin -codeBlocks, je vous tiendrai au courant..

    Merci en tout cas..

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 129
    Points : 33 061
    Points
    33 061
    Billets dans le blog
    4
    Par défaut
    Bonjour,

    ce ne sont pas les dll que l'on lie mais les .a ou .lib

  5. #5
    Membre expert
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1 415
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 415
    Points : 3 159
    Points
    3 159
    Par défaut
    Citation Envoyé par Bousk Voir le message
    ce ne sont pas les dll que l'on lie mais les .a ou .lib
    Quand on lie en statique, mais quand on lie en dynamique, on lie bien les .so ou les .dll. Il me semble non ?

    De toute manière, .dll ou .lib, même combat : ce n'est pas supporté par gcc et donc pas supporté par MinGW donc tu ne pourras pas linker sur ta bibliothèque avec, quelle que soit ta configuration. Il ta faut le compilo Microsoft et la meilleure manière de l'avoir c'est d'installer Visual Studio Express (gratuit).

  6. #6
    Futur Membre du Club
    Homme Profil pro
    doctorant
    Inscrit en
    Février 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : doctorant

    Informations forums :
    Inscription : Février 2013
    Messages : 9
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par Bousk Voir le message
    Bonjour,

    ce ne sont pas les dll que l'on lie mais les .a ou .lib
    Merci pour cette réponse au fait dans l'API il est indiquer que je dois specifier
    les chemins suivants dans les proprietés de mon projets.


    1)
    Please set the following values under “Configuration Properties”:
    “▪▪C/C++” → “General”: “Additional Include Directories”: "<BGAPI SDK>\Dev\C_C++\Inc"
    2)
    “Linker” → “General”: “▪▪Additional Library Directories”: "<BGAPI SDK>\Dev\C_C++\Lib"
    “Linker” → “Input”: “Additional Dependencies”: ▪▪bgapi.lib
    3)
    “Build▪▪ Events” → “Post-Build-Event”: “Command Line”: copy "<BGAPI SDK>\Bin"\*.* .\

    Au niveau du 3) il n'ya que les .dll ...

    En plus le bug vient de l'appelle de la fonction " BGAPI::countSystems"
    et dans la doc toujours il est indiqué ceci : "The BGAPI::countSystems function refers to installed interface dll’s."

    J'ai donc compris qu'il faut specipier les .dll au compilateur..
    Est ce que je me trompe ???

  7. #7
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 129
    Points : 33 061
    Points
    33 061
    Billets dans le blog
    4
    Par défaut
    Citation Envoyé par jblecanard Voir le message
    Quand on lie en statique, mais quand on lie en dynamique, on lie bien les .so ou les .dll. Il me semble non ?
    Sauf erreur (et manip que je ne connais pas et n'ai jamais réalisé), on lie toujours un .a ou .lib.
    Les .dll contiennent du code compilé et sont à placer à côté de l'exécutable final.
    On peut ouvrir une dll pour y accéder (exemple de Glew pour charger les fonctionnalités OpenGL), mais on ne la lie toujours pas. On lie le .lib correspondant.

    “Command Line”: copy "<BGAPI SDK>\Bin"\*.* .
    Il n'y a que des dll, et il n'y a aussi qu'une commande copy. Inutile de détailler son utilité je pense, son nom parle de lui-même non..?
    De plus, il s'agit de post-build event. Là encore, une traduction suffit à comprendre ce dont il s'agit.

    dans la doc toujours il est indiqué ceci : "The BGAPI::countSystems function refers to installed interface dll’s."
    Je vois pas par quel miracle il pourrait en être autrement.

  8. #8
    Futur Membre du Club
    Homme Profil pro
    doctorant
    Inscrit en
    Février 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : doctorant

    Informations forums :
    Inscription : Février 2013
    Messages : 9
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par jblecanard Voir le message
    Quand on lie en statique, mais quand on lie en dynamique, on lie bien les .so ou les .dll. Il me semble non ?

    De toute manière, .dll ou .lib, même combat : ce n'est pas supporté par gcc et donc pas supporté par MinGW donc tu ne pourras pas linker sur ta bibliothèque avec, quelle que soit ta configuration. Il ta faut le compilo Microsoft et la meilleure manière de l'avoir c'est d'installer Visual Studio Express (gratuit).
    merci,
    de pour cette précision, je vais donc installer V S Express,

    Je vous tiens au courant...

  9. #9
    Futur Membre du Club
    Homme Profil pro
    doctorant
    Inscrit en
    Février 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : doctorant

    Informations forums :
    Inscription : Février 2013
    Messages : 9
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par Bousk Voir le message
    Sauf erreur (et manip que je ne connais pas et n'ai jamais réalisé), on lie toujours un .a ou .lib.
    Les .dll contiennent du code compilé et sont à placer à côté de l'exécutable final.
    On peut ouvrir une dll pour y accéder (exemple de Glew pour charger les fonctionnalités OpenGL), mais on ne la lie toujours pas. On lie le .lib correspondant.


    Il n'y a que des dll, et il n'y a aussi qu'une commande copy. Inutile de détailler son utilité je pense, son nom parle de lui-même non..?
    De plus, il s'agit de post-build event. Là encore, une traduction suffit à comprendre ce dont il s'agit.


    Je vois pas par quel miracle il pourrait en être autrement.


    Bonjour,
    j'ai installé Visual B Express aprés run :
    voici les erreurs que j'ai, avez vous une idée pour me débloquer :
    code :
    1>------ Début de la génération*: Projet*: TestCamera2, Configuration*: Debug Win32 ------
    1> TestCamera2.vcxproj -> C:\Users\Macisse\Desktop\TestCamera2\Debug\TestCamera2.exe
    1> Le fichier spécifié est introuvable.
    1>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppCommon.targets(113,5): error MSB3073: La commande "copy C:\Baumer GAPI SDK 1.7\Components\Bin\*.* .\
    1>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppCommon.targets(113,5): error MSB3073: :VCEnd" s'est arrêtée avec le code 1.
    ========== Génération*: 0 a réussi, 1 a échoué, 0 mis à jour, 0 a été ignoré ==========

    merci bien

  10. #10
    Futur Membre du Club
    Homme Profil pro
    doctorant
    Inscrit en
    Février 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : doctorant

    Informations forums :
    Inscription : Février 2013
    Messages : 9
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par momo_oca Voir le message
    Bonjour,
    j'ai installé Visual B Express aprés run :
    voici les erreurs que j'ai, avez vous une idée pour me débloquer :
    code :
    1>------ Début de la génération*: Projet*: TestCamera2, Configuration*: Debug Win32 ------
    1> TestCamera2.vcxproj -> C:\Users\Macisse\Desktop\TestCamera2\Debug\TestCamera2.exe
    1> Le fichier spécifié est introuvable.
    1>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppCommon.targets(113,5): error MSB3073: La commande "copy C:\Baumer GAPI SDK 1.7\Components\Bin\*.* .\
    1>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppCommon.targets(113,5): error MSB3073: :VCEnd" s'est arrêtée avec le code 1.
    ========== Génération*: 0 a réussi, 1 a échoué, 0 mis à jour, 0 a été ignoré ==========

    merci bien

    Merci,
    j'ai pu compiler mon code ..avec Visual Studio eXPRESS..

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 27/03/2009, 19h48
  2. Erreur compilation : undefine reference to '_
    Par Darksnakes dans le forum Débuter
    Réponses: 9
    Dernier message: 11/03/2009, 11h49
  3. Réponses: 2
    Dernier message: 02/05/2008, 09h11
  4. Réponses: 2
    Dernier message: 27/03/2008, 16h57
  5. Erreur compilation "undefined reference to "
    Par ViRouF dans le forum C++
    Réponses: 5
    Dernier message: 02/03/2007, 14h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo