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