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 :

fonction template et librairie


Sujet :

C++

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 298
    Points : 886
    Points
    886
    Par défaut fonction template et librairie
    Bonjour, je suis en train de me faire une librairie. Mon problème vient maintenant que j'ai une fonction template et j'obtiens l'erreur C2894 sous Visual Studio 2005

    error C2894: templates cannot be declared to have 'C' linkage
    pour exporter une fonction non template, je fais ceci :

    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
     
    #ifndef EXTERN_C
    #ifdef __cplusplus
    #define EXTERN_C extern "C"
    #else
    #define EXTERN_C extern
    #endif
    #endif
     
    #ifdef WIN32
    #ifdef MaLib_EXPORTS
    #define MaLib_API __declspec(dllexport)
    #else
    #define MaLib_API __declspec(dllimport)
    #endif
    #else
    #define MaLib_API
    #endif
     
     
    EXTERN_C MaLib_API void __stdcall str_trim(std::string & str);
    et dans mon fichier .cpp j'ai le code source de la fonction str_trim()

    Maintenant pour une fonction template, où dois-je mettre le mot-clé EXTERN_C (qui vaut ici extern "C") ?

    Merci d'avance

  2. #2
    Membre émérite
    Avatar de white_tentacle
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    1 505
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 1 505
    Points : 2 799
    Points
    2 799
    Par défaut
    Comment ferait un programme C, qui ne connaît rien à std::string, pour te donner un std::string en paramètre ?

    Si tu veux utiliser un linkage C, il te faut une API C. Sinon, tu peux utiliser un linkage C++ (donc, sans extern "C").

Discussions similaires

  1. Pointeur sur une fonction template
    Par Progs dans le forum Langage
    Réponses: 2
    Dernier message: 15/02/2006, 20h25
  2. Réponses: 10
    Dernier message: 25/11/2005, 17h12
  3. Fonction template virtuelle... comment l'éviter ?
    Par :Bronsky: dans le forum Langage
    Réponses: 12
    Dernier message: 07/06/2005, 14h21
  4. fonctions template
    Par romeo9423 dans le forum Langage
    Réponses: 12
    Dernier message: 22/01/2005, 16h13
  5. Fonctions template+friend sous VC7
    Par patapetz dans le forum MFC
    Réponses: 12
    Dernier message: 24/09/2004, 11h16

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