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 :

DLL VS2010 warning C4273


Sujet :

C++

  1. #1
    Membre chevronné Avatar de Astraya
    Homme Profil pro
    Consommateur de café
    Inscrit en
    Mai 2007
    Messages
    1 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Consommateur de café
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 1 043
    Points : 2 234
    Points
    2 234
    Par défaut DLL VS2010 warning C4273
    Bonjour,

    Je suis en face d'un problème qui n'apparait que dans le mode release et non pas le mode debug sous visual studio 2010.
    J'ai créer une dll (projet win32,dll, projet vide et n'exporte pas les symboles)

    J'ai deux fichiers tout simple :
    le .h
    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
     
    #ifndef ARME_H
    #define ARME_H
     
    #ifdef  ARME_EXPORTS // Compilation
    #define ARME_API  __declspec(dllexport)  //Exporte les symboles
    #else //Utilisation
    #define ARME_API  __declspec(dllimport) //Importe les symboles
    #endif
     
     
     
    struct Arme
    {
        virtual void tirer() = 0;
        virtual ~Arme() throw() {}
    };
     
    extern "C"
    {
        ARME_API Arme * CreerArme();
    }
     
    #endif // ARME_H
    et .cpp

    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
    #include "Arme.h"
    #include <iostream>
     
    using std::cout;
     
    struct ArmeDefaut : Arme
    {
        void tirer() { cout << "BANG!" ; }
    };
     
    struct ArmeCool : Arme
    {
        void tirer() { cout << "KABOUM!" ; }
    };
     
     
    Arme * CreerArme()
    {
        return new ArmeCool;
    }
    Lors de compilation en mode debug, je n'ai aucun avertissement. En release par conter j'ai l'avertissement C4273. J'ai bien entendu regarder sur le msdn et forum mais je ne vois pas de correspondance avec mon code...

    C4273
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    // C4273.cpp 
    // compile with: /W1 
     
    char __declspec(dllimport) c; 
    char c;   // C4273, delete this line or the line above to resolve  
     
    int main() { }
    Si l'un d'entre vous aurait une idée du pourquoi...
    Merci


    EDIT: je précise que je suis sous Visual Studio 2010
    Homer J. Simpson


  2. #2
    Membre chevronné Avatar de Astraya
    Homme Profil pro
    Consommateur de café
    Inscrit en
    Mai 2007
    Messages
    1 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Consommateur de café
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 1 043
    Points : 2 234
    Points
    2 234
    Par défaut
    Et une boulette! une!

    Mon erreur était simplement un copie coller...
    le code à modifier:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    #ifdef  TESTDLL_EXPORTS // Compilation
    #define ARME_API  __declspec(dllexport)  //Exporte les symboles
    #else //Utilisation
    #define ARME_API  __declspec(dllimport) //Importe les symboles
    #endif
    TESTDLL_EXPORTS étant la définition du préprocesseur en fonction du nom du projet...

    Merci quand même
    Homer J. Simpson


+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. VS2010 - Warning C4661
    Par Kalite dans le forum C++
    Réponses: 8
    Dernier message: 04/04/2012, 13h20
  2. VS2010 : DLL commune sans copie local.
    Par Sankasssss dans le forum Windows Forms
    Réponses: 0
    Dernier message: 30/10/2011, 19h57
  3. DLL créé avec VS2010 dans Office2003
    Par lolo406 dans le forum Général Dotnet
    Réponses: 3
    Dernier message: 12/10/2010, 14h51
  4. System.Data.SqlServerCe.dll manquant sur VS2010?
    Par raphchar dans le forum Accès aux données
    Réponses: 1
    Dernier message: 01/08/2010, 00h04
  5. Réponses: 18
    Dernier message: 16/03/2010, 21h51

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