VS and MRef to forward declarations ?

Philippe Torrelli philippe.torrelli at alcatel-lucent.fr
Fri Feb 2 09:40:15 CET 2007


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




More information about the Minisip-devel mailing list