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 :

[NASM] utilisation d'une methode d'un fichier obj depuis le C


Sujet :

C

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    196
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 196
    Points : 94
    Points
    94
    Par défaut [NASM] utilisation d'une methode d'un fichier obj depuis le C
    Bonjour,
    j'ai un code NASM dans lequel sont déclarés des fonctions en global. J'ai généré le fichier *.obj avec NAsM et souhaite maintenant appelé ces 2 fonctions depuis un programme en toto.C.
    Dans le fichier toto.h, je declare les fonctions
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    extern "C" {
    	void __cdecl f1(char *s,...);
    	char __cdecl f2(...);
    }
    mais le linker me retourne un message d'erreur: "unresolved external symbol _f1 referenced in function _main"
    Merci de votre aide!
    PS: le C sera compiler avec cl

  2. #2
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Points : 5 360
    Points
    5 360
    Par défaut
    Citation Envoyé par jesus144
    Bonjour,
    j'ai un code NASM dans lequel sont déclarés des fonctions en global. J'ai généré le fichier *.obj avec NAsM et souhaite maintenant appelé ces 2 fonctions depuis un programme en toto.C.
    Dans le fichier toto.h, je declare les fonctions
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    extern "C" {
    	void __cdecl f1(char *s,...);
    	char __cdecl f2(...);
    }
    mais le linker me retourne un message d'erreur: "unresolved external symbol _f1 referenced in function _main"
    Merci de votre aide!
    PS: le C sera compiler avec cl
    Salut,

    Attention, un fichier avec l'extension .C sera compilé comme un fichier C++ par certain compilateurs C/C++. Si c'est tu désires utiliser un compilateur C, il faut utiliser l'extension .c (minuscule), et le fichier d'en tête suivant:
    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
     
    #ifndef H_TC_MONENTETE
    #define H_TC_MONENTETE
     
    #ifdef __cplusplus
    #undef M_BEGIN_DECLS
    #define M_BEGIN_DECLS extern "C" {
    #undef M_END_DECLS
    #define M_END_DECLS }
    #endif
     
    M_BEGIN_DECLS
    void __cdecl f1(char *s,...);
    char __cdecl f2(...);
    M_END_DECLS
     
    #endif /* guard H_TC_MONENTETE */
    }
    Il te suffit d'inclure cette en-tête dans les fichiers d'implantation .c appelant les fonctions f1() et f2(), et de lier avec le fichier objet correspondant à l'édition des liens. Si les conventions d'appel C on été respectées, cela devrait bien se passer.

    Les fonctions dans ton code assembleur sont-elles nommées _f1 et _f2? La convention d'appel __cdecl impose la déclaration des noms de fonctions avec un préfixe "_" (underscore).

    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 29/04/2011, 00h33
  2. Utiliser le lanceur Java pour un fichier Jar depuis une application ?
    Par Baptiste Wicht dans le forum Général Java
    Réponses: 5
    Dernier message: 10/02/2010, 09h41
  3. [POO] Utilisation d'une methode
    Par chtom dans le forum Langage
    Réponses: 2
    Dernier message: 21/11/2006, 13h47
  4. Utilisation d'une ligne d'un fichier
    Par semaj_james dans le forum C
    Réponses: 4
    Dernier message: 28/10/2005, 22h42

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