2011-02-05 5 views
1

Eh bien, c'est un peu complexe à expliquer. Je compile une bibliothèque statique qui a une tête qui ressemble à quelque chose semblable à ceci:constructeur de membre statique global n'étant pas appelé lorsqu'il est compilé avec rvct

class Foo{ 
    static int Goo(){ 
     DoSomethingExciting(); 
     return 0;  
    } 
    static int fooMember; 
} 

Dans le Cpp j'ai une initialisation du fooMember:

int Foo::fooMember = Foo::Goo(); 

En liant la bibliothèque statique une application que j'écris, la méthode Goo qui est censée être appelée n'est pas appelée. Pour être exact, la méthode DoSomethingExciting() n'est pas appelée du tout. J'utilise la classe Foo dans l'application. Quand je mets la ligne:

int Foo::fooMember = Foo::Goo(); 

dans un cpp dans ma demande (bien sûr je supprimer la même ligne de la bibliothèque statique), je vois que l'on appelle la Goo(). Je ne suis pas sûr de savoir comment nommer le problème que je rencontre, je suppose que c'est un problème avec l'initialisation des membres statiques globales ou quelque chose comme ça. J'utilise RVCT pour compiler. Lorsque vous compilez le même scénario dans Visual Studio, tout fonctionne très bien. Je devine que RVCT se comporte différemment et je pourrais devoir ajouter quelques drapeaux de compilation. Btw, j'ai également essayé d'utiliser un décompilateur sur mon exécutable compilé et je n'ai vu aucun appel à Goo(), bien que j'ai vu que la méthode est dans le fichier.

J'espère que j'été assez clair avec mon problème :)

Merci à l'avance ...

Répondre

0

Il serait appelé si elle était un constructeur d'un objet statique, mais comme il est seulement statique méthode, pourquoi un appel serait-il généré automatiquement?

Questions connexes