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 :

[Compilation] Appel d'une fonction C++ depuis du code C


Sujet :

C++

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 27
    Points : 25
    Points
    25
    Par défaut [Compilation] Pb DLM
    Bonjour,

    J’ai une erreur de compilation que je n’arrive pas à résoudre. J’ai 2 DLM, Fichier1 et Fichier2. Fichier1 est en C++, Fichier2 en C. J’appelle dans Fichier200.c une fonction C++ définie dans Fichier100.cpp

    Je comple avec DCXX Dignus Systems/C++ Compiler - version 1.80.30

    J’ai l’erreur suivante à la compilation:
    plink: warning: symbol `Fichier1' from file "obj\Fichier200.o" is unresolved
    plink: warning: symbol ` Fichier1' from file "obj\ Fichier200.o" is unresolved
    PLINK Return code 1


    Sans l’appel MaFct() dans Fichier2() , la compilation passe.

    Merci de votre aide.


    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    Fichier100.cpp
    extern "C"
    {
    
    	// Declare function(s) with C linkage
    
    	void MaFct()
    	{
    		// ............
    	}
    
    }
    
    Class1::Class1()
    {
    }
    
    Fichier1.h
    #ifndef __FICHIER1_H__
    #define __FICHIER1_H__
    
    class Class1
    {
    public:
    	Class1();
    };
    
    #endif
    
    Fichier1I.h
    #pragma map(MaFct, " Fichier1")
    
    #ifdef __cplusplus
    extern "C" void MaFct();
    #else
    extern void MaFct();
    #endif
    
    Fichier1.bsl
    DLM Fichier1   
    Fichier100    
    
    
    Fichier200.c
    #include "Fichier2.h"  
    
    void Fichier2()
    {
    	MaFct() ;
    }
    
    Fichier2.h
    #include "Fichier1I.h"  
    
    
    Fichier2.bsl                                                                       
    DLM Fichier2   
    Fichier200
    J’ai déjà essayé de changer Fichier2.bsl

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Fichier2.bsl                                                                       
    DLM Fichier2   
    @IMPORTDS Fichier1
    Fichier200
    Mais dans ce cas j’ai l’erreur suivante
    plink: error: unable to open 'DSDLIB(Fichier1)' for INCLUDE: No such file or directory
    plink: warning: symbol `Fichier1' from file "obj\Fichier200.o" is unresolved
    PLINK Return code 1

    Autres essais:
    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    Fichier100.cpp
    #include "Fichier1.h"
    
    extern "C"
    {
    
    	// Declare function(s) with C linkage
    
    	void MaFct()
    	{
    		// ............
    	}
    
    }
    
    Class1::Class1()
    {
    }
    
    Fichier1.h
    #ifndef __FICHIER1_H__
    #define __FICHIER1_H__
    
    class Class1
    {
    public:
    	Class1();
    };
    
    #endif
    
    Fichier1I.h
    #ifndef __FICHIER1I_H__
    #define __FICHIER1I_H__
    
    void MaFct();
    
    #endif
    
    Fichier2.h
    #ifndef __FICHIER2_H__
    #define __FICHIER2_H__
    
    #include "Fichier1I.h"
    
    #endif
    
    Fichier200.c
    #include "Fichier2.h" 
    
    void Fichier2()
    {
    	MaFct();
    }
    Mais ca ne resout pas mes problemes de compilation:

    .\Fichier1I.h : error C2100 : syntax error: missing declaration
    extern "C" void MaFct();


    Si vous avez des idees ou vous voyez une erreur...

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 27
    Points : 25
    Points
    25
    Par défaut Avec 1 seule DLM -> Ok
    En reunissant les 2 DLM dans une seule, je n'ai plus d'erreur de compilation.

    Si vous voyez une solution avec 2 DLM, je suis prenneur.

    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    Fichier100.cpp
    
    // Declare function(s) with C linkage
    extern "C"void MaFct()
    {
    		// ............
    }
    
    
    Class1::Class1()
    {
    }
    
    Fichier1.h
    #ifndef __FICHIER1_H__
    #define __FICHIER1_H__
    
    class Class1
    {
    public:
    	Class1();
    };
    
    #endif
    
    Fichier1I.h
    #pragma map(MaFct, " Fichier1")
    
    #ifdef __cplusplus
    extern "C" void MaFct();
    #else
    extern void MaFct();
    #endif
    
    Fichier1.bsl
    DLM Fichier1 
    Fichier100    
    Fichier200
    
    Fichier200.c
    #include "Fichier2.h"  
    
    void Fichier2()
    {
    	MaFct() ;
    }
    
    Fichier2.h
    #include "Fichier1I.h"
    
    Suppression de Fichier2.bsl

Discussions similaires

  1. Appel d'une fonction javascript depuis un flash
    Par nelk1 dans le forum jQuery
    Réponses: 1
    Dernier message: 25/04/2009, 23h16
  2. Appel d'une fonction "MFC" depuis Java (e.g. GetWindowText)
    Par Tororo73 dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 07/01/2009, 11h51
  3. Appeller une fonction Javascript depuis le Code VB
    Par chrislcf dans le forum ASP.NET
    Réponses: 5
    Dernier message: 08/08/2008, 12h41
  4. [Debutant] Appel d'une fonction FORTRAN depuis C++
    Par Amariel dans le forum Débuter
    Réponses: 2
    Dernier message: 10/07/2007, 13h14
  5. Appel d'une fonction A depuis une fonction B.
    Par LeFlou dans le forum C++
    Réponses: 9
    Dernier message: 22/05/2007, 17h36

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