Qt Visual Studioアドインを備えたWindows用のQtライブラリ4.8.1(VS 2010 Ultimate)があります。これは私の非常に単純なアプリです:
#include<qobject.h>
#include<qstring.h>
#include<memory>
class MyClass : public QObject{
Q_OBJECT
public:
MyClass( const QString &text, QObject *parent = 0 ) : m_text(text) {}
public slots:
void setText( const QString &text );
signals:
void textChanged( const QString& );
private:
QString m_text;
};
void MyClass::setText( const QString &text ){
if( m_text == text ) return;
m_text = text;
emit textChanged( m_text );
}
int main(int argc, char *argv[]){
std::shared_ptr<MyClass> a(new MyClass("foo"));
std::shared_ptr<MyClass> b(new MyClass("bar"));
QObject::connect( a.get(), SIGNAL(textChanged(const QString&)),
b.get(), SLOT(setText(const QString&)) );
a->setText("changed");
}
未解決の外部に関連するエラー: エラー 6 エラー LNK2001: 未解決の外部シンボル "public: virtual int __thiscall MyClass::qt_metacall(enum QMetaObject::Call,int,void * *)" (?qt_metacall@MyClass@@UAEHW4Call@QMetaObject @@HPAPAX@Z)
エラー 4 エラー LNK2001: 未解決の外部シンボル "public: virtual struct QMetaObject const * __thiscall MyClass::metaObject(void)const " (?metaObject@MyClass@@UBEPBUQMetaObject@@XZ)
エラー 5 エラー LNK2001: 未解決の外部シンボル "public: virtual void * __thiscall MyClass::qt_metacast(char const *)" (?qt_metacast@MyClass@@UAEPAXPBD@Z)
エラー 3 エラー LNK2019: 未解決の外部シンボル "保護: void __thiscall MyClass::textChanged(class QString const &)" (?textChanged@MyClass@@IAEXABVQString@@@Z) 関数で参照されている "public: void __thiscall MyClass::setText( class QString const &)" (?setText@MyClass@@QAEXABVQString@@@Z)
および 2 つの警告:
警告 1 警告 MSB8017: 項目 "GeneratedFiles\Debug\main.moc" のカスタム ビルド コマンドの実行中に、循環依存関係が検出されました。これにより、インクリメンタル ビルドが正しく機能しない可能性があります。
警告 2 警告: 'C:\Users\Anonymous\documents\visual studio 2010\Projects\qtWorld\qtWorld\qtworld.qrc' にリソースがありません。
qmake / nmake は使用しませんでした。最新の Qt Visual Studio アドイン 1.1.11 を入手した場合は必要ありません (Intellisense でさえキーワードを認識しslots:
signals:
ます)。
今私の質問:
- ソリューション全体を再構築するだけで多くのエラーが解決されると聞きましたが、それはなぜですか?
- これらのエラーが詳細に発生する理由と、考えられる解決策を説明してください。
ps 説明を上手にしてください。売春婦にならないでください