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

Windows Discussion :

Création d'une DLL en C


Sujet :

Windows

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Rédacteur

    Avatar de Jean-Michel Ormes
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2007
    Messages
    1 838
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Services à domicile

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 838
    Par défaut Création d'une DLL en C
    Bonjour. Je cherche à créer une DLL en C qui simule une carte d'acquisition. J'ai donc suivi un tutorial et créer un fichier .h:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    #include "windows.h"
    #define export __declspec (dllexport)
    
    export int __stdcall StartAcquisition(void);
    export void __stdcall StopAcquisition(void);
    export int __stdcall GetValues(float*mtab, int maxval);
    DWORD WINAPI Fthread( LPVOID lpParam);
    double Lit_une_donnee();
    un fichier .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
    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
    #include "dllacq.h"
    #include <math.h>
    
    volatile int FINACQ=0;
    volatile float tabacq[1000];
    double PI=3.141;
        int ir;
    	int iw;
        int v;
    
    int __stdcall StartAcquisition(void) {
        HANDLE hThread;
        DWORD dwThreadId, dwThrdParam = 1;
        
        FINACQ = 0;
    
        
        hThread = CreateThread(NULL, 0, Fthread, &dwThrdParam, 0, &dwThreadId);
        if (hThread == NULL) {
                    return(GetLastError());
        }
        else{
             CloseHandle(hThread);
             }
        return 0;
    }
    
    DWORD WINAPI Fthread( LPVOID lpParam) {
    	while(FINACQ != 1)
    	  {
    		if (iw = ir)
    		{
    			tabacq[iw] = Lit_une_donnee();
    			if(iw != ir)
    			{
    			iw=(iw+1)%1000;
    			}
    		}
            Sleep (400);
          }
                       FINACQ=2;
                       return 0;
    }
    
    double Lit_une_donnee() {
           int parasite;
           static double X=0;
           
           X+=0.3; if(X> (2*PI)) X = X - (2*PI);
           parasite = (rand() % 3 - 2);
           return(10*sin(X) + parasite);
    }
    
    void __stdcall StopAcquisition(void) {
         FINACQ = 1;
         while(FINACQ != 2);
         FINACQ=0;
         }
         
    
    int __stdcall GetValues(float*mtab, int maxval){
        int n=0;
        while ((ir!= iw)&&(n<=maxval))
    	{
    		mtab[n]= tabacq[ir];
    		ir=(ir+1)%1000;
    	}
                            
        return n;
    }
    et un fichier .def

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    LIBRARY	DLLacq
    DESCRIPTION "DLL test"
    EXPORTS
           StartAcquisition
           StopAcquisition
           GetValues
    Je voudrais savoir comment je peux tester les procédures de ma DLL.

  2. #2
    Membre chevronné Avatar de pascal.barbier
    Profil pro
    Inscrit en
    Août 2007
    Messages
    362
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Août 2007
    Messages : 362
    Par défaut
    Pour tester les procédures de la DLL, il faut créer une application qui importe ces procédures :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    #include "dllacq.h"
    
    float mtab[10];
    
    int main(int argc, char* argv[])
    {
    	int status = StartAcquisition();
    	int res = GetValues(mtab, 10);
    	StopAcquisition();
    	return 0;
    }
    S'assurer que la DLL est dans le PATH ou dans le répertoire courant.

Discussions similaires

  1. Pb de compilation lors de la création d'une DLL
    Par Annaced dans le forum Visual C++
    Réponses: 8
    Dernier message: 15/06/2010, 23h26
  2. création d'une dll (classe c++)
    Par TheShadow dans le forum MFC
    Réponses: 4
    Dernier message: 10/04/2006, 16h21
  3. Réponses: 4
    Dernier message: 10/04/2006, 16h12
  4. Problème de création d'une dll...
    Par adrien954 dans le forum C++Builder
    Réponses: 4
    Dernier message: 21/10/2005, 10h46
  5. Conventions à utiliser pour la création d'une DLL
    Par Writer dans le forum Langage
    Réponses: 3
    Dernier message: 02/08/2005, 09h24

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