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 :

Importer une librairie de fonctions


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Octobre 2007
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 80
    Par défaut Importer une librairie de fonctions
    Bonsoir à tous et à toutes ,


    Je travail sur un projet dont une librarie de fonctions doit étre importée , pour ça j'ai ajouter toute la librarie de fonctions a mon compilateur .


    Le probléme c'est une fois le code créer la fonction n'est pas trouver par le Linker Error BN_set_bit Not Found , BN_Copy Not Found .


    Les deux fonctions sont bien présentes dans le fichier BN_Librairie.C

    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
     
    BIGNUM *BN_copy(a, b)
    BIGNUM *a;
    BIGNUM *b;
    	{
    	int i;
    	BN_ULONG *A,*B;
     
    	bn_check_top(b);
     
    	if (a == b) return(a);
    	if (bn_wexpand(a,b->top) == NULL) return(NULL);
     
    #if 1
    	A=a->d;
    	B=b->d;
    	for (i=b->top&(~7); i>0; i-=8)
    		{
    		A[0]=B[0];
    		A[1]=B[1];
    		A[2]=B[2];
    		A[3]=B[3];
    		A[4]=B[4];
    		A[5]=B[5];
    		A[6]=B[6];
    		A[7]=B[7];
    		A+=8;
    		B+=8;
    		}
     
    }


    La Fonction BN_set_bit

    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
     
     
    int BN_set_bit(a, n)
    BIGNUM *a;
    int n;
    	{
    	int i,j,k;
     
    	i=n/BN_BITS2;
    	j=n%BN_BITS2;
    	if (a->top <= i)
    		{
    		if (bn_wexpand(a,i+1) == NULL) return(0);
    		for(k=a->top; k<i+1; k++)
    			a->d[k]=0;
    		a->top=i+1;
    		}
     
    	a->d[i]|=(1L<<j);
    	return(1);
    	}


    J'ai créer un repertoire " Librarairie_de_fonctions " ou on trouveras toutes les
    FONCTIONS utilisées et les fichier d'en téte pour que le LINKER lire les fonctions à partir de ce répertoire de fonctions .



    les fichiers d'en téte que j'utilise .

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    #include <stdlib.h>
    #include <stdio.h>
    #include <unistd.h>
    #include "librairie_de_fonctions/bn.h"


    Le LINKER ne trouve tujours pas les fonctions malgrés que celles ci soient présentes dans le fichier BN_Librairie.c
    Je ne comprends pas vraiment d'ou ça provient .


    Merci pour vos conseils et suggéstions conçernant ce probléme d'utilisation d'une librairie de fonctions .

  2. #2
    Rédacteur
    Avatar de Vincent Rogier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 373
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 373
    Par défaut
    un linker associe des fichiers contenant du code exécutable et non pas des fichiers sources

    Si le compilo ne bronche pas c'est qu'il trouve bien le header qui déclare les fonctions

    Le linker râle car il ne trouve pas de code exécutable à linker qui contient la fonction. le linker se fout des fichier sources....

    Il faut donc compiler le fichier source qui contient ces fonctions afin de présenter au linker un fichier avec du code exécutable (*.o ou s'il s'agit d'un libraire partagée un *.lib ou *.a ou un *.so selon ta plateforme et tes options de linkage).
    Vincent Rogier.

    Rubrique ORACLE : Accueil - Forum - Tutoriels - FAQ - Livres - Blog

    Vous voulez contribuer à la rubrique Oracle ? Contactez la rubrique !

    OCILIB (C Driver for Oracle)

    Librairie C Open Source multi-plateformes pour accéder et manipuler des bases de données Oracle

  3. #3
    Membre confirmé
    Inscrit en
    Octobre 2007
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 80
    Par défaut
    Bonsoir à tous et à toutes ,


    Merci pour la réponse , les focntions sont dans le fichier bn_librarire.C , si on compile ça résoudera PAS le probléme je l'ai déja essayer , TOUTES les focntions sont dans ce fichier *.C quand j'utilise une des focntions à la compil c'est 0 erreurs mais 'est au LINKAGE que j'ai des erreurs pour chaque focntions ajoutées et ainsi de suite .

    On y ajoutant les fichiers d'en téte nécessaire et ADEQUAT n'as pas résolu le probléme les FONCTIONS sont présentes dans le fichier BN.LIBRIARIE.C mais le
    LINKER affiche toujours des erreurs Function not found .


    C'est une librarie de fonctions
    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
     
    /* crypto/bn/bn_lib.c 
        
     *   Library BN_LIB_C 
     * This library is free for commercial use as long  the code are not to be   removed.
     * If this package is used in a product, Eric Young should be given attribution
     * as the author of the parts of the library used.
     * This can be in the form of a textual message at program startup or
     * in documentation (online or textual) provided with the package.
     
     
     The licence and distribution terms for any publically available version or
     * derivative of this code cannot be changed.  i.e. this code cannot simply be
     * copied and put under another distribution licence
     * [including the GNU Public Licence.] */



    Merci quand méme pour ton conseil et ta disponibilité .

  4. #4
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    • Primo as-tu compilé la bibliothèque, ou as-tu déjà un .a ou .so (sous unixoide) ou un .dll (sous windows) ? Si tu n'as aucun de ces derniers éléments, il faut commencer par compiler la biblothèque, qui dans ce cas a dû être fournie avec un Makefile ou l'équivalent.


    • Ensuite, pour que le linker comprenne que c'est là qu'il faut chercher le code compilé, il faut soit lui fournir le chemin (et éventuellement le nonm complet) dans les options d'un outil de développement du style DevC++, CV++, etc.., soit sous unixoide ajouter dans la ligne de link un "-Lchemin -lbibliotheque" soit "chemin/biblotheque_en_entier"

  5. #5
    Membre confirmé
    Inscrit en
    Octobre 2007
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 80
    Par défaut
    Bonjour souviron34 ,


    D'accord , merci pour ton intervention .

    on résume que le LINKER faudrait qui LISE à partir d'un Librarie *.LIB pour éviter les erreurs au LINKAGE .

    Le Linker aura besoin de lire de la LIBRAIRIE *.LIB comme l'as souligné vicenzo
    sous différentes formes : *.a , *.lib .

  6. #6
    Membre confirmé
    Inscrit en
    Octobre 2007
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 80
    Par défaut
    UP ,


    La bibliothéque *.LIB a été importée et le chemin de la biblio est dans le chemin du LINKER .

    Les fonctions sont présntes dans celles ci mais toujours des messages d'erreurs


    Autre solution , j'ai compilé le fichier BN.C comme conseillé par vicenzo

    et ça a generée une librarairie BN_LIB.LIB , celle i a été ajoutée au LINKER mais toujours des messages d'erreurs .


    J'ai passer 12 HEURES pour régler ce probléme sans succés , si y'a des gens qui pourraient me conseilé voir suggérer une autre altérnative .


    Merci pour vos conseils .

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

Discussions similaires

  1. Importer une librairie dans un code c++
    Par wikers dans le forum Linux
    Réponses: 6
    Dernier message: 14/08/2009, 00h31
  2. Netbeans 6.1 Importer une librairie
    Par jeanluc dans le forum NetBeans
    Réponses: 15
    Dernier message: 26/11/2008, 00h50
  3. Comment importer une librairie avec le plugin CDT
    Par verbose dans le forum Eclipse C & C++
    Réponses: 9
    Dernier message: 25/09/2007, 11h47
  4. Existe-t-il une librairie de fonctions financières ?
    Par Vikisme dans le forum Langage
    Réponses: 1
    Dernier message: 05/07/2007, 11h50
  5. importer une librairie dans mon projet
    Par ryoussef19 dans le forum VC++ .NET
    Réponses: 3
    Dernier message: 25/04/2007, 14h04

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