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

Bibliothèques C++ Discussion :

Préproceseur et dll


Sujet :

Bibliothèques C++

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    160
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 160
    Points : 81
    Points
    81
    Par défaut Préproceseur et dll
    Bonjour tous le monde,

    Je veux piloter une carte d'acquisition avec labview mais celle-ci, n'est pas supporté en natif.

    Je vais donc utilisé le dll associé.

    J'ai un soucis, c'est que je n'arrive pas du tout à configurer les préprocesseurs pour créer les vi.

    J'ai le message suivant :

    La fonction ne peut pas être importée dans LabVIEW. Ceci peut être dû à un des problèmes suivants :

    La fonction n'est pas déclarée dans le fichier d'en-tête mais est exportée dans la bibliothèque.

    Vérifiez le fichier d'en-tête pour vous assurer qu'il contient les déclarations de la fonction.

    Les symboles non définis risquent d'empêcher l'assistant de reconnaître les fonctions et les paramètres. Pour corriger ce problème, vérifiez le fichier d'en-tête pour déterminer si vous devez ajouter des définitions de préprocesseurs. Cliquez sur le bouton Précédent pour retourner à la page précédente de l'assistant et ajouter les définitions d'un préprocesseur (par exemple, "NIAPI_stdcall = __stdcall" ou "NIAPIDefined = 1").
    _WIN32;_WIN64;__cplusplus;
    Mon entête de bibliothèque est la suivante :

    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
    00001 /***************************************************************************
    00002 ****************************************************************************
    00003 *
    00004 *       Humusoft data acquisition library.
    00005 *
    00006 *       Copyright 2002-2007 Humusoft s.r.o.
    00007 *
    00008 ******************************************************************************
    00009 *****************************************************************************/
    00010
    00011 #ifndef HUDAQLIB_H__
    00012 #define HUDAQLIB_H__
    00013
    00014
    00015 /* All the functions have C naming convention in C++. */
    00016 #ifdef __cplusplus
    00017 extern "C" {
    00018 #endif  /* __cplusplus */
    00019
    00020
    00021 /* Define calling conventions. */
    00022 #ifdef _WIN32
    00023   #define HUDAQLIBPUBLIC __declspec(dllimport)
    00024   #ifdef _WIN64
    00025     #define HUDAQAPI
    00026   #else
    00027     #define HUDAQAPI __stdcall
    00028   #endif
    00029 #else
    00030   #define HUDAQLIBPUBLIC
    00031   #define HUDAQAPI
    00032 #endif
    00033
    00034
    00035
    00039 typedef enum
    00040 {
    00041   HUDAQSUCCESS = 0,     
    00042
    00043   HUDAQPARTIAL = 1,     
    00044   HUDAQFAILURE = 2,     
    00045   HUDAQBADARG = 3,      
    00046   HUDAQNOTSUPPORTED = 4
    00047
    00048 } HUDAQSTATUS;
    J'ai mis comme préprocesseur, ceux-ci (mais aucun résultat non plus)

    __cplusplus;_win32;_win64

    Que dois je rajouter ?
    Merci d'avance

  2. #2
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 189
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 189
    Points : 17 141
    Points
    17 141
    Par défaut
    Normalement, tu ne dois pas les mettre, c'est ton compilateur C++ qui le fait.

    Tu peux envisager d'utiliser -DNIAPI_stdcall="__stdcall" (si c'était gcc)
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    160
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 160
    Points : 81
    Points
    81
    Par défaut
    Je ne sais pas trop, dans le compilateur au dessus il dise qu'il faut les ajouter pour que cela fonctionne.

    Via le lien suivant, j'ai mis les __cpluscplus

    http://zone.ni.com/reference/fr-XX/h..._config_paths/

  4. #4
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 189
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 189
    Points : 17 141
    Points
    17 141
    Par défaut
    il nous manque une information utile.
    Quel est ton EDI? Visual Studio?
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    160
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 160
    Points : 81
    Points
    81
    Par défaut
    Labview qui ne prend en compte que du C ou c++

  6. #6
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 189
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 189
    Points : 17 141
    Points
    17 141
    Par défaut
    C'est étonnant qu'il ne crée pas les macros usuelles.
    Je ne pourrais pas en dire plus, n'ayant jamais utilisé labView avec de tels greffons.

    Il y a une autre possibilité: chaque fonction exportée par la dll devrait être déclarée comme telle par l'en-tête.
    Peut-être en manque-t-il?
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    160
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 160
    Points : 81
    Points
    81
    Par défaut
    Je ne sais pas trop, c'est l’entête qui est proposé dans le fichier suivant.
    Il fallait récrée l’entête à partir du fichier chm dans l'onglet files.
    Fichiers attachés Fichiers attachés

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    160
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 160
    Points : 81
    Points
    81
    Par défaut
    onjour,
    J'ai trouvé sur le forum LAVA (un forum spécialisé dans l'utilisation de labveiw et sur la compilation de dll), quelqu'un qui a pu m'aider à avancer.
    En faites, le type size_t, n'est pas reconnu en standard C (mais dans la bibliothèque stddef.h). Il fallait ajouter

    size_t=unsigned __int64 ; for 64 bit
    size_t=unsigned int ; for 32 bit

    Cela fonctionnait avec le préprocesseur size_t=unsigned int.
    Par contre deux classes ne sont pas crée :

    callInstaller
    GetBoardIOAddress.

    Je ne sais pas trop ce que je dois y faire.
    Merci d'avance
    Cordialement

  9. #9
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 189
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 189
    Points : 17 141
    Points
    17 141
    Par défaut
    Bonjour,
    J'ai l'impression que tu prends le problème un peu à l'envers, et qu'il faudrait en fait faire de la cross-compilation vers ta version de Labview.

    Ou alors, tu as simplement omis certains #include à tort
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

Discussions similaires

  1. [CR] Infos sur l'utilisation de dll
    Par step dans le forum SAP Crystal Reports
    Réponses: 11
    Dernier message: 09/08/2002, 11h35
  2. Declarer une dll Delphi ?
    Par DelphiCool dans le forum C++Builder
    Réponses: 2
    Dernier message: 26/07/2002, 10h07
  3. Débug de DLL
    Par Bayard dans le forum C++Builder
    Réponses: 3
    Dernier message: 22/07/2002, 15h08
  4. Equivalent à ExeName pour une DLL
    Par Smortex dans le forum Langage
    Réponses: 7
    Dernier message: 16/07/2002, 21h07
  5. Réponses: 2
    Dernier message: 20/03/2002, 23h01

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