Bonjour !!!! J'ai un petit soucis avec la redéfinition de mes opérateur new et delete. En fait j'ai repris le systeme de memory manager de Loulou engine.
le probleme est que lorsque je compile jai des link error a propos de redéfinition de fonction appartenant a la std

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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
 
Game Specific error LNK2005: "protected: void __thiscall std::ios_base::_Init(void)" (?_Init@ios_base@std@@IAEXXZ) already defined in msvcprtd.lib(MSVCP71D.dll)
Game Specific error LNK2005: "public: __thiscall std::_Locinfo::_Locinfo(char const *)" (??0_Locinfo@std@@QAE@PBD@Z) already defined in msvcprtd.lib(MSVCP71D.dll)
Game Specific error LNK2005: "public: __thiscall std::_Locinfo::~_Locinfo(void)" (??1_Locinfo@std@@QAE@XZ) already defined in msvcprtd.lib(MSVCP71D.dll)
Game Specific error LNK2005: "public: __thiscall std::_Lockit::_Lockit(int)" (??0_Lockit@std@@QAE@H@Z) already defined in Globals.lib(MemoryManager.obj)
Game Specific error LNK2005: "public: __thiscall std::_Lockit::~_Lockit(void)" (??1_Lockit@std@@QAE@XZ) already defined in Globals.lib(MemoryManager.obj)
Game Specific error LNK2005: "public: __thiscall std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >::~basic_string<char,struct std::char_traits<char>,class std::allocator<char> >(void)" (??1?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@XZ) already defined in Globals.lib(MemoryManager.obj)
Game Specific error LNK2005: "public: __thiscall std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >(char const *)" (??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBD@Z) already defined in Globals.lib(MemoryManager.obj)
Game Specific error LNK2005: "public: __thiscall std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" (??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ABV01@@Z) already defined in Globals.lib(MemoryManager.obj)
Game Specific error LNK2005: "public: __thiscall std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >(unsigned int,char)" (??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ID@Z) already defined in Globals.lib(MemoryManager.obj)
Game Specific error LNK2005: "public: __thiscall std::locale::~locale(void)" (??1locale@std@@QAE@XZ) already defined in Globals.lib(MemoryManager.obj)
Game Specific error LNK2005: "public: __thiscall std::locale::id::operator unsigned int(void)" (??Bid@locale@std@@QAEIXZ) already defined in Globals.lib(MemoryManager.obj)
Game Specific error LNK2005: "public: __thiscall std::locale::locale(void)" (??0locale@std@@QAE@XZ) already defined in msvcprtd.lib(MSVCP71D.dll)
Game Specific error LNK2005: "public: bool __thiscall std::ios_base::good(void)const " (?good@ios_base@std@@QBE_NXZ) already defined in Globals.lib(MemoryManager.obj)
Game Specific error LNK2005: "public: char __thiscall std::basic_ios<char,struct std::char_traits<char> >::fill(void)const " (?fill@?$basic_ios@DU?$char_traits@D@std@@@std@@QBEDXZ) already defined in Globals.lib(MemoryManager.obj)
Game Specific error LNK2005: "public: char __thiscall std::basic_ios<char,struct std::char_traits<char> >::widen(char)const " (?widen@?$basic_ios@DU?$char_traits@D@std@@@std@@QBEDD@Z) already defined in Globals.lib(MemoryManager.obj)
Game Specific error LNK2005: "public: char const & __thiscall std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >::operator[](unsigned int)const " (??A?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEABDI@Z) already defined in Globals.lib(MemoryManager.obj)
Game Specific error LNK2005: "public: class std::basic_ostream<char,struct std::char_traits<char> > & __thiscall std::basic_ostream<char,struct std::char_traits<char> >::flush(void)" (?flush@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV12@XZ) already defined in Globals.lib(MemoryManager.obj)
Game Specific error LNK2005: "public: class std::basic_ostream<char,struct std::char_traits<char> > * __thiscall std::basic_ios<char,struct std::char_traits<char> >::tie(void)const " (?tie@?$basic_ios@DU?$char_traits@D@std@@@std@@QBEPAV?$basic_ostream@DU?$char_traits@D@std@@@2@XZ) already defined in Globals.lib(MemoryManager.obj)
Game Specific error LNK2005: "public: class std::basic_streambuf<char,struct std::char_traits<char> > * __thiscall std::basic_ios<char,struct std::char_traits<char> >::rdbuf(void)const " (?rdbuf@?$basic_ios@DU?$char_traits@D@std@@@std@@QBEPAV?$basic_streambuf@DU?$char_traits@D@std@@@2@XZ) already defined in Globals.lib(MemoryManager.obj)
Game Specific error LNK2005: "public: class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > & __thiscall std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >::append(unsigned int,char)" (?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@ID@Z) already defined in Globals.lib(MemoryManager.obj)
Game Specific error LNK2005: "public: class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > & __thiscall std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >::erase(unsigned int,unsigned int)" (?erase@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@II@Z) already defined in Globals.lib(MemoryManager.obj)
Game Specific error LNK2005: "public: class std::locale __thiscall std::ios_base::getloc(void)const " (?getloc@ios_base@std@@QBE?AVlocale@2@XZ) already defined in Globals.lib(MemoryManager.obj)
Game Specific error LNK2005: "public: class std::locale::facet const * __thiscall std::locale::_Getfacet(unsigned int)const " (?_Getfacet@locale@std@@QBEPBVfacet@12@I@Z) already defined in msvcprtd.lib(MSVCP71D.dll)
Game Specific error LNK2005: "public: int __thiscall std::basic_streambuf<char,struct std::char_traits<char> >::sputc(char)" (?sputc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHD@Z) already defined in Globals.lib(MemoryManager.obj)
Game Specific error LNK2005: "public: int __thiscall std::ios_base::flags(void)const " (?flags@ios_base@std@@QBEHXZ) already defined in Globals.lib(MemoryManager.obj)
Game Specific error LNK2005: "public: int __thiscall std::ios_base::width(int)" (?width@ios_base@std@@QAEHH@Z) already defined in Globals.lib(MemoryManager.obj)
Game Specific error LNK2005: "public: int __thiscall std::ios_base::width(void)const " (?width@ios_base@std@@QBEHXZ) already defined in Globals.lib(MemoryManager.obj)
Game Specific error LNK2005: "public: static bool __cdecl std::char_traits<char>::eq_int_type(int const &,int const &)" (?eq_int_type@?$char_traits@D@std@@SA_NABH0@Z) already defined in Globals.lib(MemoryManager.obj)
Game Specific error LNK2005: "public: static char __cdecl std::char_traits<char>::to_char_type(int const &)" (?to_char_type@?$char_traits@D@std@@SADABH@Z) already defined in Globals.lib(MemoryManager.obj)
Game Specific error LNK2005: "public: static int __cdecl std::char_traits<char>::eof(void)" (?eof@?$char_traits@D@std@@SAHXZ) already defined in Globals.lib(MemoryManager.obj)
Game Specific error LNK2005: "public: static int __cdecl std::char_traits<char>::to_int_type(char const &)" (?to_int_type@?$char_traits@D@std@@SAHABD@Z) already defined in Globals.lib(MemoryManager.obj)
Game Specific error LNK2005: "public: static unsigned int __cdecl std::ctype<char>::_Getcat(class std::locale::facet const * *)" (?_Getcat@?$ctype@D@std@@SAIPAPBVfacet@locale@2@@Z) already defined in Globals.lib(MemoryManager.obj)
Game Specific error LNK2005: "public: unsigned int __thiscall std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >::max_size(void)const " (?max_size@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIXZ) already defined in Globals.lib(MemoryManager.obj)
Game Specific error LNK2005: "public: unsigned int __thiscall std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >::size(void)const " (?size@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIXZ) already defined in Globals.lib(MemoryManager.obj)
Game Specific error LNK2005: "public: virtual __thiscall std::ios_base::~ios_base(void)" (??1ios_base@std@@UAE@XZ) already defined in msvcprtd.lib(MSVCP71D.dll)
Game Specific error LNK2005: "public: void __thiscall std::basic_ios<char,struct std::char_traits<char> >::setstate(int,bool)" (?setstate@?$basic_ios@DU?$char_traits@D@std@@@std@@QAEXH_N@Z) already defined in Globals.lib(MemoryManager.obj)
Game Specific error LNK2005: "public: void __thiscall std::basic_ostream<char,struct std::char_traits<char> >::_Osfx(void)" (?_Osfx@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEXXZ) already defined in Globals.lib(MemoryManager.obj)
Game Specific error LNK2005: "public: void __thiscall std::basic_streambuf<char,struct std::char_traits<char> >::_Lock(void)" (?_Lock@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEXXZ) already defined in Globals.lib(MemoryManager.obj)
Game Specific error LNK2005: "public: void __thiscall std::basic_streambuf<char,struct std::char_traits<char> >::_Unlock(void)" (?_Unlock@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEXXZ) already defined in Globals.lib(MemoryManager.obj)
Game Specific error LNK2005: "public: void __thiscall std::ios_base::_Addstd(void)" (?_Addstd@ios_base@std@@QAEXXZ) already defined in msvcprtd.lib(MSVCP71D.dll)
Game Specific error LNK2005: "public: void __thiscall std::ios_base::clear(int,bool)" (?clear@ios_base@std@@QAEXH_N@Z) already defined in msvcprtd.lib(MSVCP71D.dll)
Game Specific error LNK2005: "public: void __thiscall std::locale::facet::_Incref(void)" (?_Incref@facet@locale@std@@QAEXXZ) already defined in Globals.lib(MemoryManager.obj)
Game Specific error LNK2005: "public: void __thiscall std::locale::facet::_Register(void)" (?_Register@facet@locale@std@@QAEXXZ) already defined in msvcprtd.lib(MSVCP71D.dll)
Game Specific error LNK2005: "void * __cdecl operator new(unsigned int,struct std::_DebugHeapTag_t const &,char *,int)" (??2@YAPAXIABU_DebugHeapTag_t@std@@PADH@Z) already defined in msvcprtd.lib(MSVCP71D.dll)
Game Specific error LNK2005: "void * __cdecl operator new[](unsigned int,struct std::_DebugHeapTag_t const &,char *,int)" (??_U@YAPAXIABU_DebugHeapTag_t@std@@PADH@Z) already defined in msvcprtd.lib(MSVCP71D.dll)
Game Specific error LNK2005: "void __cdecl operator delete(void *,struct std::_DebugHeapTag_t const &,char *,int)" (??3@YAXPAXABU_DebugHeapTag_t@std@@PADH@Z) already defined in msvcprtd.lib(MSVCP71D.dll)
Game Specific error LNK2005: ___xc_a already defined in MSVCRTD.lib(cinitexe.obj)
Game Specific error LNK2005: ___xc_z already defined in MSVCRTD.lib(cinitexe.obj)
Game Specific error LNK2005: ___xi_a already defined in MSVCRTD.lib(cinitexe.obj)
Game Specific error LNK2005: ___xi_z already defined in MSVCRTD.lib(cinitexe.obj)
Game Specific error LNK2005: __amsg_exit already defined in MSVCRTD.lib(MSVCR71D.dll)
Game Specific error LNK2005: __c_exit already defined in MSVCRTD.lib(MSVCR71D.dll)
Game Specific error LNK2005: __cexit already defined in MSVCRTD.lib(MSVCR71D.dll)
Game Specific error LNK2005: __CrtDumpMemoryLeaks already defined in MSVCRTD.lib(MSVCR71D.dll)
Game Specific error LNK2005: __exit already defined in MSVCRTD.lib(MSVCR71D.dll)
Game Specific error LNK2005: __XcptFilter already defined in MSVCRTD.lib(MSVCR71D.dll)
Game Specific error LNK2005: _exit already defined in MSVCRTD.lib(MSVCR71D.dll)
Game Specific error LNK2005: _fflush already defined in MSVCRTD.lib(MSVCR71D.dll)
Game Specific error LNK2005: _free already defined in MSVCRTD.lib(MSVCR71D.dll)
Game Specific error LNK2005: _localeconv already defined in MSVCRTD.lib(MSVCR71D.dll)
Game Specific error LNK2005: _mainCRTStartup already defined in MSVCRTD.lib(crtexe.obj)
Game Specific error LNK2005: _malloc already defined in MSVCRTD.lib(MSVCR71D.dll)
Game Specific fatal error LNK1169: one or more multiply defined symbols found
d:\Romain\Beatle Engine 8\Globals\Core\Core.cpp(45): warning C4390: ';' : empty controlled statement found; is this the intent?
Game Specific warning LNK4098: defaultlib 'LIBCD' conflicts with use of other libs; use /NODEFAULTLIB:library
Game Specific warning LNK4098: defaultlib 'MSVCRTD' conflicts with use of other libs; use /NODEFAULTLIB:library
Voici le code ou je redéfinis les opérateurs.

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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
 
ifdef _DEBUG
 
#ifndef DEBUGNEWDELETE_H
#define DEBUGNEWDELETE_H
 
#include "MemoryManager.h"
 
inline void* operator new(std::size_t  Size, const char* FileName, int Line)
{
    return MemoryManager->Allocate((Size), FileName, Line, false);
 
}
 
inline void* operator new[](std::size_t Size, const char* FileName, int Line)
{
    return MemoryManager->Allocate((Size), FileName, Line, true);
}
 
inline void operator delete(void* P)
{
	MemoryManager->Free(P, false);
}
 
inline void operator delete[](void* P)
{
   MemoryManager->Free(P, true);
}
 
inline void operator delete(void* P, const char* FileName, int Line)
{
	MemoryManager->NextDelete(FileName, Line);
	MemoryManager->Free(P, false);
}
 
inline void operator delete[](void* P, const char* FileName, int Line)
{
	MemoryManager->NextDelete(FileName, Line);
	MemoryManager->Free(P, true);
}
 
#endif
 
#ifndef new
	#define new    new(__FILE__, __LINE__)
	#define delete MemoryManager->NextDelete(__FILE__, __LINE__), delete
#endif
 
#endif
Mais si je met en commentaire ceci : et bien je n'ai plus les link errors

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
 
inline void* operator new(std::size_t  Size, const char* FileName, int Line)
{
    //return MemoryManager->Allocate((Size), FileName, Line, false);
    return NULL;
}
inline void operator delete(void* P)
{
	//MemoryManager->Free(P, false);
}
 
inline void operator delete(void* P, const char* FileName, int Line)
{
	//MemoryManager->NextDelete(FileName, Line);
	//MemoryManager->Free(P, false);
}
Pour information il y a entre autre ceci dans le fichier MemoryManager.h

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
#include <fstream>
#include <map>
#include <stack>
#include <string>
 
#define MemoryManager nsMemory::MemoryManager_c::Get_Instance()
Merci !!!!