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 .cppCode:
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:
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:
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