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 :

Problème de link sous Turbo C 2.0


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 29
    Par défaut Problème de link sous Turbo C 2.0
    Bonjour, voila j'ai rédigé un code sous TC, pour contrôler une carte d'acquisition.
    Le code me paraît bon, seulement j'ai un soucis sur le linkage! je ne maitrise pas trop ca! J'ai bien mis mon fichier entete (.h) dans le dossier INCLUDE.

    voici le code

    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
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
     
    ******************************************************/
    /* This program is developed by Turbo C 2.0 */
    /******************************************************/
    /* Demo 1: One P16R16 card demo. */
    /******************************************************/
    #include "P16R16.H"
    int main()
    {
    int i,j;
    WORD nVal;
    float fVal;
    WORD wBoards,wRetVal,wVal;
    WORD wInData;
    WORD wTypeID;
    WORD wAddress0,wAddress1,wAddress2;
    WORD wAddress3,wAddress4,wAddress5;
    WORD P16R16_BaseAddress,P8R8_BaseAddress;
    WORD wP16R16No,wP8R8No;
    clrscr();
    /* initiaing PCI-P16R16 card and detect how many P16R16/P8R8 card in PC */
    wRetVal=PCI_DriverInit(&wBoards);
    printf("Threr are %d PCI-P16R16/P8R8 Cards in this PC, tally.\n",wBoards);
    if( wBoards==0 )
    {
    putch(0x07); putch(0x07); putch(0x07);
    printf("There are no P16R16/P8R8 card in this PC !!!\n");
    exit(0);
    }
    /* dump every P16R16/P8R8 card's configuration address space */
    for(i=0; i<wBoards; i++)
    {
     
    wRetVal=PCI_GetConfigAddressSpace(i,&wTypeID,
    &wAddress0,&wAddress1,&wAddress2, &wAddress3,&wAddress4,&wAddress5);
    if( !wRetVal )
    {
    switch( wTypeID )
    {
    case 0: printf("==> %02d Board Name:PCI-P16R16\n",i);
    P16R16_BaseAddress=wAddress2;
    wP16R16No++;
    break;
    case 1: printf("==> %02d Board Name:PCI-P8R8\n",i);
    P8R8_BaseAddress=wAddress2;
    wP8R8No++;
    break;
    case 2: printf("==> %02d Board Name:PCI-TMC12\n",i);
    break;
    case 3: printf("==> %02d Board Name:PCI-DA16\n",i);
    break;
    case 4: printf("==> %02d Board Name:PCI-DA8\n",i);
    break;
    }
    printf(" --> Addr0:%04x | Addr1:%04x | Addr2:%0x\n",
    wAddress0,wAddress1,wAddress2);
    printf(" --> Addr3:%04x | Addr4:%04x | Addr5:%0x\n\n",
    wAddress3,wAddress4,wAddress5);
    }
    }
    /* Getting the Driver version */
    wRetVal=PCI_GetDriverVersion(&wVal);
    printf("Driver Version=%x\n",wVal);
    /* call a function to test if exact calling LIB */
    nVal=PCI_ShortSub2(1,2);
    printf("P180X_ShortSub2(1,2) = %d\n",nVal);
    /* call another function to test if exact calling LIB */
    fVal=PCI_FloatSub2(1.0,2.0);
     
    printf("P180X_FloatSub2(1.0,2.0) = %f\n",fVal);
    if( wP16R16No<1 )
    {
    putch(0x07);
    printf("Please plug one PCI-P16R16 in PC !!!\n");
    exit(0);
    }
    /*************************************/
    /***** PCI-P16R16 DO/DO demo *****/
    /*************************************/
    printf("The PCI-P16R16 DO/DI testing !!!\n");
    P16R16_DO(P16R16_BaseAddress,0x0000); /* Digital output */
    delay(500); /* Delay a little time 500ms */
    wInData=P16R16_DI(P16R16_BaseAddress); /* Digital input */
    printf("Digital Output -> 0000H | Digital Input -> %04xH\n",wInData);
    P16R16_DO(P16R16_BaseAddress,0xFFFF); /* Digital output */
    delay(500); /* Delay a little time 500ms */
    wInData=P16R16_DI(P16R16_BaseAddress); /* Digital input */
    printf("Digital Output -> FFFFH | Digital Input -> %04xH\n",wInData);
    P16R16_DO(P16R16_BaseAddress,0x5555); /* Digital output */
    delay(500); /* Delay a little time 500ms */
    wInData=P16R16_DI(P16R16_BaseAddress); /* Digital input */
    printf("Digital Output -> 5555H | Digital Input -> %04xH\n",wInData);
    P16R16_DO(P16R16_BaseAddress,0xAAAA); /* Digital output */
    delay(500); /* Delay a little time 500ms */
    wInData=P16R16_DI(P16R16_BaseAddress); /* Digital input */
    printf("Digital Output -> AAAAH | Digital Input -> %04xH\n",wInData);
    PCI_DriverClose();
    return 0;
    }
    Les erreurs sont les suivantes :
    LINKER ERROR sur toutes les fonctions que j'appel (PCI_FLOATSUB2; PCI_DRIVERINIT, ...)
    Ces fonctions sont définies dans le fichier entete P16R16.H, donc c'est forcément un soucis de link! Aidez moi SVP !

  2. #2
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par nanou1983 Voir le message
    Ces fonctions sont définies dans le fichier entete P16R16.H, donc c'est forcément un soucis de link! Aidez moi SVP !
    Problème classique maintes fois évoqué. Les fichiers .h ne sont que la partie visible (interface) de la bibliothèque. Le code des fonctions (implémentation) se trouve dans des fichiers objets (.o, .obj) et/ou dans une bibliothèque (.a, .lib) qu'il(s) faut lier au projet.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 29
    Par défaut Merci pour ta réponse, mais comment les lier?
    Salut Emmanuel,
    Merci pour ta réponse, mais comment les lier?
    Merci pour votre réactivité! C'est impressionnant!

  4. #4
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par nanou1983 Voir le message
    mais comment les lier?
    Il faut les ajouter au projet. (Tu as bien créé un projet ?)

    Au fait, Turbo C 2.0, c'est un choix murement réfléchi ? Parce que générer une application MS-DOS (donc 16-bit mode réel) de nos jours, c'est prendre quelques risques, surtout si l'engin en question doit bricoler dans le matériel. Que est ton système ?

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 29
    Par défaut suite
    Salut,
    Ben j'ai un ordinateur Windows XP.
    je me demande moi aussi si TC 2.0 est bien, que puis-je utiliser?
    merci.

  6. #6
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par nanou1983 Voir le message
    Salut,
    Ben j'ai un ordinateur Windows XP.
    je me demande moi aussi si TC 2.0 est bien, que puis-je utiliser?
    merci.
    Pour développer des applications (Console ou GUI), je recommande Code::Blocks

    http://www.codeblocks.org/

    Forum dédié :

    http://www.developpez.net/forums/forumdisplay.php?f=373

    Mais si tu cherches à développer un driver Windows, ça ne suffira peut être pas. Je n'en sais pas plus. Pour le développement Windows :

    http://www.developpez.net/forums/forumdisplay.php?f=16

Discussions similaires

  1. problème de link edit sous code block
    Par tom31 dans le forum C
    Réponses: 1
    Dernier message: 10/01/2011, 12h40
  2. Problème de link ODE/OpenGL sous Dev-cpp
    Par Milanber9999 dans le forum ODE
    Réponses: 3
    Dernier message: 09/05/2007, 01h46
  3. problème de clavier en turbo pascal
    Par foliies dans le forum Turbo Pascal
    Réponses: 8
    Dernier message: 05/10/2003, 21h46
  4. Problème avec CopyDir sous D5
    Par Houben Jacques dans le forum Langage
    Réponses: 3
    Dernier message: 26/05/2003, 22h02

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