2012-01-26 16 views
-2

私はfoo.libを生成する以下のプロジェクトを持っています。libファイルのC++グローバルクラスコンストラクタ

//foo.h: 
class A 
{ 
public: 
    A(); 
    static A* i; 
}; 

//foo.cpp: 
A* i = 0; 
A g_A_instance; 
A::A() 
{ 
    //this constructor is not called :(
    i = this; 
} 

別のプロジェクトで、foo.libとリンクするexeファイルを生成しています。コンストラクタA :: A()は呼び出されていないようです。どのように私はこの作品を作ることができます、私は行方不明のいくつかのコンパイラオプションはありますか?

PS:私は、Visual Studioコンパイラ2008を使用

おかげで、 Raxvan。

+0

あなたはそのことを何と呼んでいないのですか?エラーが発生していますか?それをインスタンス化するためのexeファイルにはどのようなコードがありますか? – StevieG

+0

私はブレークポイントを持っており、コンストラクタにはprintfがありません。また、それらのどれもが動作していません。また、コードが静的変数を実行すると、NULLはすべてNULLになります – Raxvan

答えて

0

私はそれがリンクする

A* A::i = 0; 

A* i = 0; 

を変更する場合は、コンストラクタはデフォルトのオプション、VS2005で私のために適切と呼ばれていました。この正確な例は、コンパイラの問題を再現しますか?

+0

Aはメインプロジェクトのコンパイラ私はA(単純なポインタさえ)を使うならば、すべてのA関連データを "削除"して、すべて正常に動作します。 – Raxvan

関連する問題