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