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
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
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
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...
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; }
C4273
Si l'un d'entre vous aurait une idée du pourquoi...
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() { }
Merci
EDIT: je précise que je suis sous Visual Studio 2010
Partager