VS and MRef to forward declarations ?
Cesc
cesc.santa at gmail.com
Fri Feb 2 10:41:48 CET 2007
As said, same error with MS Embedded 4.0 ...so yes, I guess it also
has to do with the way MS deals with templates ... it sucks, but you
found already the solution to the problem, i think ... it is dirty,
but it works.
On 2/2/07, Philippe Torrelli <philippe.torrelli at alcatel-lucent.fr> wrote:
> Hello Athanasios,
>
> I'm compiling for win32 with vs2005 pro edition.
>
> The error codes I get are
> C2027
> C2227
> C2680 ...
> Depending on the part of the code that is compiled.
> See below where I pasted an excerpt of the error I guet when compiling
> MediaStream
>
>
> I guess it has to do with the way template code is generated, or maybe with
> the STL version of visual studio... Or that I missed something.
>
> It's not a pre-processor error type 'include file not found' like you
> suggest but a compilation error.
>
> When I've finished adding the includes, I'll do a svn diff and send you the
> results.
>
> Regards
>
> Philippe Torrelli
>
> -----Example -----
> MediaStream.cxx ( This is with v 3157 )
>
> c:\minisip_w32\trunk\libmutil\include\libmutil\memobject.h(329) : error
> C2027: utilisation du type non défini 'SoundSource'
>
> c:\minisip_w32\trunk\libminisip\include\libminisip\soundcard\audiomixer.h(46
> ): voir la déclaration de 'SoundSource'
> c:\minisip_w32\trunk\libmutil\include\libmutil\memobject.h(325):
> lors de la compilation de la fonction membre '<Inconnu>' de la classe
> <Inconnu>
> c:\minisip_w32\trunk\libmutil\include\libmutil\memobject.h(359):
> lors de la compilation de la fonction membre '<Inconnu>' de la classe
> <Inconnu>
> d:\msvc8\vc\include\list(41): voir la référence à l'instanciation
> de la classe modèle 'MRef<OPType>' en cours de compilation
> with
> [
> OPType=SoundSource *
> ]
> d:\msvc8\vc\include\list(111): voir la référence à l'instanciation
> de la classe modèle 'std::_List_nod<_Ty,_Alloc>::_Node' en cours de
> compilation
> with
> [
> _Ty=MRef<SoundSource *>,
> _Alloc=std::allocator<MRef<SoundSource *>>
> ]
> d:\msvc8\vc\include\list(110): lors de la compilation de la
> fonction membre '<Inconnu>' de la classe <Inconnu>
>
> c:\minisip_w32\trunk\libminisip\include\libminisip\soundcard\soundio.h(225)
> : voir la référence à l'instanciation de la classe modèle 'std::list<_Ty>'
> en cours de compilation
> with
> [
> _Ty=MRef<SoundSource *>
> ]
> c:\minisip_w32\trunk\libmutil\include\libmutil\memobject.h(329) : error
> C2227: la partie gauche de '->decRefCount' doit pointer vers un type
> class/struct/union/générique
> c:\minisip_w32\trunk\libmutil\include\libmutil\memobject.h(294) : error
> C2680: 'SoundSource *': type de cible non valide pour dynamic_cast
> 'SoundSource': la classe doit être définie avant une utilisation
> dans un dynamic_cast
> c:\minisip_w32\trunk\libmutil\include\libmutil\memobject.h(291):
> lors de la compilation de la fonction membre '<Inconnu>' de la classe
> <Inconnu>
> c:\minisip_w32\trunk\libmutil\include\libmutil\memobject.h(329) : error
> C2027: utilisation du type non défini 'MikeyMessage'
> c:\minisip_w32\trunk\libmikey\include\libmikey\keyagreement.h(69):
> voir la déclaration de 'MikeyMessage'
> c:\minisip_w32\trunk\libmutil\include\libmutil\memobject.h(325):
> lors de la compilation de la fonction membre '<Inconnu>' de la classe
> <Inconnu>
> c:\minisip_w32\trunk\libmutil\include\libmutil\memobject.h(359):
> lors de la compilation de la fonction membre '<Inconnu>' de la classe
> <Inconnu>
> c:\minisip_w32\trunk\libmikey\include\libmikey\keyagreement.h(216):
> voir la référence à l'instanciation de la classe modèle 'MRef<OPType>' en
> cours de compilation
> with
> [
> OPType=MikeyMessage *
> ]
> c:\minisip_w32\trunk\libmutil\include\libmutil\memobject.h(329) : error
> C2227: la partie gauche de '->decRefCount' doit pointer vers un type
> class/struct/union/générique
> c:\minisip_w32\trunk\libmutil\include\libmutil\memobject.h(294) : error
> C2680: 'MikeyMessage *': type de cible non valide pour dynamic_cast
> 'MikeyMessage': la classe doit être définie avant une utilisation
> dans un dynamic_cast
> c:\minisip_w32\trunk\libmutil\include\libmutil\memobject.h(291):
> lors de la compilation de la fonction membre '<Inconnu>' de la classe
> <Inconnu>
> MediaHandler.cxx
> c:\minisip_w32\trunk\libmutil\include\libmutil\memobject.h(329) : error
> C2027: utilisation du type non défini 'MikeyMessage'
> c:\minisip_w32\trunk\libmikey\include\libmikey\keyagreement.h(69):
> voir la déclaration de 'MikeyMessage'
> c:\minisip_w32\trunk\libmutil\include\libmutil\memobject.h(325):
> lors de la compilation de la fonction membre '<Inconnu>' de la classe
> <Inconnu>
> c:\minisip_w32\trunk\libmutil\include\libmutil\memobject.h(359):
> lors de la compilation de la fonction membre '<Inconnu>' de la classe
> <Inconnu>
> c:\minisip_w32\trunk\libmikey\include\libmikey\keyagreement.h(216):
> voir la référence à l'instanciation de la classe modèle 'MRef<OPType>' en
> cours de compilation
> with
> [
> OPType=MikeyMessage *
> ]
> c:\minisip_w32\trunk\libmutil\include\libmutil\memobject.h(329) : error
> C2227: la partie gauche de '->decRefCount' doit pointer vers un type
> class/struct/union/générique
> c:\minisip_w32\trunk\libmutil\include\libmutil\memobject.h(294) : error
> C2680: 'MikeyMessage *': type de cible non valide pour dynamic_cast
> 'MikeyMessage': la classe doit être définie avant une utilisation
> dans un dynamic_cast
> c:\minisip_w32\trunk\libmutil\include\libmutil\memobject.h(291):
> lors de la compilation de la fonction membre '<Inconnu>' de la classe
> <Inconnu>
> c:\minisip_w32\trunk\libmutil\include\libmutil\memobject.h(318) : error
> C2027: utilisation du type non défini 'ConfMessageRouter'
> c:\minisip_w32\trunk\libminisip\include\libminisip\gui\gui.h(38):
> voir la déclaration de 'ConfMessageRouter'
> c:\minisip_w32\trunk\libmutil\include\libmutil\memobject.h(315):
> lors de la compilation de la fonction membre '<Inconnu>' de la classe
> <Inconnu>
> c:\minisip_w32\trunk\libmutil\include\libmutil\memobject.h(353):
> lors de la compilation de la fonction membre '<Inconnu>' de la classe
> <Inconnu>
> c:\minisip_w32\trunk\libminisip\include\libminisip\gui\gui.h(125):
> voir la référence à l'instanciation de la classe modèle 'MRef<OPType>' en
> cours de compilation
> with
> [
> OPType=ConfMessageRouter *
> ]
> c:\minisip_w32\trunk\libmutil\include\libmutil\memobject.h(318) : error
> C2227: la partie gauche de '->incRefCount' doit pointer vers un type
> class/struct/union/générique
> c:\minisip_w32\trunk\libmutil\include\libmutil\memobject.h(329) : error
> C2027: utilisation du type non défini 'ConfMessageRouter'
> c:\minisip_w32\trunk\libminisip\include\libminisip\gui\gui.h(38):
> voir la déclaration de 'ConfMessageRouter'
> c:\minisip_w32\trunk\libmutil\include\libmutil\memobject.h(325):
> lors de la compilation de la fonction membre '<Inconnu>' de la classe
> <Inconnu>
> c:\minisip_w32\trunk\libmutil\include\libmutil\memobject.h(329) : error
> C2227: la partie gauche de '->decRefCount' doit pointer vers un type
> class/struct/union/générique
> c:\minisip_w32\trunk\libmutil\include\libmutil\memobject.h(294) : error
> C2680: 'ConfMessageRouter *': type de cible non valide pour dynamic_cast
> 'ConfMessageRouter': la classe doit être définie avant une
> utilisation dans un dynamic_cast
> c:\minisip_w32\trunk\libmutil\include\libmutil\memobject.h(291):
> lors de la compilation de la fonction membre '<Inconnu>' de la classe
> <Inconnu>
> c:\minisip_w32\trunk\libmutil\include\libmutil\memobject.h(329) : error
> C2027: utilisation du type non défini 'FileSoundDevice'
>
> c:\minisip_w32\trunk\libminisip\include\libminisip\mediahandler\callrecorder
> .h(35): voir la déclaration de 'FileSoundDevice'
> c:\minisip_w32\trunk\libmutil\include\libmutil\memobject.h(325):
> lors de la compilation de la fonction membre '<Inconnu>' de la classe
> <Inconnu>
> c:\minisip_w32\trunk\libmutil\include\libmutil\memobject.h(359):
> lors de la compilation de la fonction membre '<Inconnu>' de la classe
> <Inconnu>
>
> c:\minisip_w32\trunk\libminisip\include\libminisip\mediahandler\callrecorder
> .h(206): voir la référence à l'instanciation de la classe modèle
> 'MRef<OPType>' en cours de compilation
> with
> [
> OPType=FileSoundDevice *
> ]
> c:\minisip_w32\trunk\libmutil\include\libmutil\memobject.h(329) : error
> C2227: la partie gauche de '->decRefCount' doit pointer vers un type
> class/struct/union/générique
> c:\minisip_w32\trunk\libmutil\include\libmutil\memobject.h(294) : error
> C2680: 'FileSoundDevice *': type de cible non valide pour dynamic_cast
> 'FileSoundDevice': la classe doit être définie avant une
> utilisation dans un dynamic_cast
> c:\minisip_w32\trunk\libmutil\include\libmutil\memobject.h(291):
> lors de la compilation de la fonction membre '<Inconnu>' de la classe
> <Inconnu>
> Media.cxx
> c:\minisip_w32\trunk\libmutil\include\libmutil\memobject.h(329) : error
> C2027: utilisation du type non défini 'SoundSource'
>
> c:\minisip_w32\trunk\libminisip\include\libminisip\soundcard\audiomixer.h(46
> ): voir la déclaration de 'SoundSource'
> c:\minisip_w32\trunk\libmutil\include\libmutil\memobject.h(325):
> lors de la compilation de la fonction membre '<Inconnu>' de la classe
> <Inconnu>
> c:\minisip_w32\trunk\libmutil\include\libmutil\memobject.h(359):
> lors de la compilation de la fonction membre '<Inconnu>' de la classe
> <Inconnu>
> d:\msvc8\vc\include\list(41): voir la référence à l'instanciation
> de la classe modèle 'MRef<OPType>' en cours de compilation
> with
> [
> OPType=SoundSource *
> ]
> d:\msvc8\vc\include\list(111): voir la référence à l'instanciation
> de la classe modèle 'std::_List_nod<_Ty,_Alloc>::_Node' en cours de
> compilation
> with
> [
> _Ty=MRef<SoundSource *>,
> _Alloc=std::allocator<MRef<SoundSource *>>
> ]
> d:\msvc8\vc\include\list(110): lors de la compilation de la
> fonction membre '<Inconnu>' de la classe <Inconnu>
>
> c:\minisip_w32\trunk\libminisip\include\libminisip\soundcard\soundio.h(225)
> : voir la référence à l'instanciation de la classe modèle 'std::list<_Ty>'
> en cours de compilation
> with
> [
> _Ty=MRef<SoundSource *>
> ]
> c:\minisip_w32\trunk\libmutil\include\libmutil\memobject.h(329) : error
> C2227: la partie gauche de '->decRefCount' doit pointer vers un type
> class/struct/union/générique
> c:\minisip_w32\trunk\libmutil\include\libmutil\memobject.h(294) : error
> C2680: 'SoundSource *': type de cible non valide pour dynamic_cast
> 'SoundSource': la classe doit être définie avant une utilisation
> dans un dynamic_cast
> c:\minisip_w32\trunk\libmutil\include\libmutil\memobject.h(291):
> lors de la compilation de la fonction membre '<Inconnu>' de la classe
> <Inconnu>
> c:\minisip_w32\trunk\libmutil\include\libmutil\memobject.h(329) : error
> C2027: utilisation du type non défini 'MikeyMessage'
> c:\minisip_w32\trunk\libmikey\include\libmikey\keyagreement.h(69):
> voir la déclaration de 'MikeyMessage'
> c:\minisip_w32\trunk\libmutil\include\libmutil\memobject.h(325):
> lors de la compilation de la fonction membre '<Inconnu>' de la classe
> <Inconnu>
> c:\minisip_w32\trunk\libmutil\include\libmutil\memobject.h(359):
> lors de la compilation de la fonction membre '<Inconnu>' de la classe
> <Inconnu>
> c:\minisip_w32\trunk\libmikey\include\libmikey\keyagreement.h(216):
> voir la référence à l'instanciation de la classe modèle 'MRef<OPType>' en
> cours de compilation
> with
> [
> OPType=MikeyMessage *
> ]
> c:\minisip_w32\trunk\libmutil\include\libmutil\memobject.h(329) : error
> C2227: la partie gauche de '->decRefCount' doit pointer vers un type
> class/struct/union/générique
> c:\minisip_w32\trunk\libmutil\include\libmutil\memobject.h(294) : error
> C2680: 'MikeyMessage *': type de cible non valide pour dynamic_cast
> 'MikeyMessage': la classe doit être définie avant une utilisation
> dans un dynamic_cast
> c:\minisip_w32\trunk\libmutil\include\libmutil\memobject.h(291):
> lors de la compilation de la fonction membre '<Inconnu>' de la classe
> <Inconnu>
> DtmfSender.cxx
> c:\minisip_w32\trunk\libmutil\include\libmutil\memobject.h(329) : error
> C2027: utilisation du type non défini 'MikeyMessage'
> c:\minisip_w32\trunk\libmikey\include\libmikey\keyagreement.h(69):
> voir la déclaration de 'MikeyMessage'
> c:\minisip_w32\trunk\libmutil\include\libmutil\memobject.h(325):
> lors de la compilation de la fonction membre '<Inconnu>' de la classe
> <Inconnu>
> c:\minisip_w32\trunk\libmutil\include\libmutil\memobject.h(359):
> lors de la compilation de la fonction membre '<Inconnu>' de la classe
> <Inconnu>
> c:\minisip_w32\trunk\libmikey\include\libmikey\keyagreement.h(216):
> voir la référence à l'instanciation de la classe modèle 'MRef<OPType>' en
> cours de compilation
> with
> [
> OPType=MikeyMessage *
> ]
> c:\minisip_w32\trunk\libmutil\include\libmutil\memobject.h(329) : error
> C2227: la partie gauche de '->decRefCount' doit pointer vers un type
> class/struct/union/générique
> c:\minisip_w32\trunk\libmutil\include\libmutil\memobject.h(294) : error
> C2680: 'MikeyMessage *': type de cible non valide pour dynamic_cast
> 'MikeyMessage': la classe doit être définie avant une utilisation
> dans un dynamic_cast
> c:\minisip_w32\trunk\libmutil\include\libmutil\memobject.h(291):
> lors de la compilation de la fonction membre '<Inconnu>' de la classe
> <Inconnu>
> c:\minisip_w32\trunk\libmutil\include\libmutil\memobject.h(329) : error
> C2027: utilisation du type non défini 'SoundSource'
>
> c:\minisip_w32\trunk\libminisip\include\libminisip\soundcard\audiomixer.h(46
> ): voir la déclaration de 'SoundSource'
> c:\minisip_w32\trunk\libmutil\include\libmutil\memobject.h(325):
> lors de la compilation de la fonction membre '<Inconnu>' de la classe
> <Inconnu>
> c:\minisip_w32\trunk\libmutil\include\libmutil\memobject.h(359):
> lors de la compilation de la fonction membre '<Inconnu>' de la classe
> <Inconnu>
> d:\msvc8\vc\include\list(41): voir la référence à l'instanciation
> de la classe modèle 'MRef<OPType>' en cours de compilation
> with
> [
> OPType=SoundSource *
> ]
> d:\msvc8\vc\include\list(111): voir la référence à l'instanciation
> de la classe modèle 'std::_List_nod<_Ty,_Alloc>::_Node' en cours de
> compilation
> with
> [
> _Ty=MRef<SoundSource *>,
> _Alloc=std::allocator<MRef<SoundSource *>>
> ]
> d:\msvc8\vc\include\list(110): lors de la compilation de la
> fonction membre '<Inconnu>' de la classe <Inconnu>
>
> c:\minisip_w32\trunk\libminisip\include\libminisip\soundcard\soundio.h(225)
> : voir la référence à l'instanciation de la classe modèle 'std::list<_Ty>'
> en cours de compilation
> with
> [
> _Ty=MRef<SoundSource *>
> ]
> c:\minisip_w32\trunk\libmutil\include\libmutil\memobject.h(329) : error
> C2227: la partie gauche de '->decRefCount' doit pointer vers un type
> class/struct/union/générique
> c:\minisip_w32\trunk\libmutil\include\libmutil\memobject.h(294) : error
> C2680: 'SoundSource *': type de cible non valide pour dynamic_cast
> 'SoundSource': la classe doit être définie avant une utilisation
> dans un dynamic_cast
> c:\minisip_w32\trunk\libmutil\include\libmutil\memobject.h(291):
> lors de la compilation de la fonction membre '<Inconnu>' de la classe
> <Inconnu>
> CallRecorder.cxx
>
> c:\minisip_w32\trunk\libminisip\include\libminisip\mediahandler\audiomedia.h
> (177): voir la déclaration de 'AudioMediaSource'
> c:\minisip_w32\trunk\libmutil\include\libmutil\memobject.h(329) : error
> C2027: utilisation du type non défini 'MikeyMessage'
> c:\minisip_w32\trunk\libmikey\include\libmikey\keyagreement.h(69):
> voir la déclaration de 'MikeyMessage'
> c:\minisip_w32\trunk\libmutil\include\libmutil\memobject.h(325):
> lors de la compilation de la fonction membre '<Inconnu>' de la classe
> <Inconnu>
> c:\minisip_w32\trunk\libmutil\include\libmutil\memobject.h(359):
> lors de la compilation de la fonction membre '<Inconnu>' de la classe
> <Inconnu>
> c:\minisip_w32\trunk\libmikey\include\libmikey\keyagreement.h(216):
> voir la référence à l'instanciation de la classe modèle 'MRef<OPType>' en
> cours de compilation
> with
> [
> OPType=MikeyMessage *
> ]
> c:\minisip_w32\trunk\libmutil\include\libmutil\memobject.h(329) : error
> C2227: la partie gauche de '->decRefCount' doit pointer vers un type
> class/struct/union/générique
> c:\minisip_w32\trunk\libmutil\include\libmutil\memobject.h(294) : error
> C2680: 'MikeyMessage *': type de cible non valide pour dynamic_cast
> 'MikeyMessage': la classe doit être définie avant une utilisation
> dans un dynamic_cast
> c:\minisip_w32\trunk\libmutil\include\libmutil\memobject.h(291):
> lors de la compilation de la fonction membre '<Inconnu>' de la classe
> <Inconnu>
>
>
> Added
> #include<libmikey/MikeyMessage.h>
> #include<libminisip/soundcard/Soundsource.h>
>
> At the end of the include list in MediaStream.cxx , it now compiles...
>
>
> _______________________________________________
> Minisip-devel mailing list
> Minisip-devel at minisip.org
> http://lists.minisip.org/mailman/listinfo/minisip-devel
>
More information about the Minisip-devel
mailing list