2011-02-06 19 views
0

別のC++ソリューションのファイルを使用してオブジェクトを作成しようとしています。私はMyClass2オブジェクトプログラムがオブジェクトを作成する作成すると他のソリューションでオブジェクトを作成中にLNK2019エラーが発生しました。C++

1>main.obj : error LNK2019: unresolved external symbol "public: virtual __thiscall MyClass1::~MyClass1(void)" ([email protected]@[email protected]) referenced in function _main 
1>main.obj : error LNK2019: unresolved external symbol "public: __thiscall MyClass1::MyClass1(class QWidget *,class QFlags<enum Qt::WindowType>)" ([email protected]@[email protected]@@[email protected]@[email protected]@@@@Z) referenced in function _main 
    • 私はMyClass1オブジェクトプログラムを作成するのエラーが発生します。エラーはありません。

    オブジェクトを正しく作成するにはどうすればよいですか?


    関連するソースの不要な部分をすべて削除しました。コードは以下の通りです。

    テスタファイルmain.cppに

    #include "tester.h" 
    #include <QtGui/QApplication> 
    
    #include "myclasses.h" 
    
    int main(int argc, char *argv[]) 
    { 
        QApplication a(argc, argv); 
        tester w; 
        w.show(); 
    
        MyClass1 aa; 
        MyClass2 bbb; 
    
        return a.exec(); 
    } 
    

    myclasses.hファイル

    #ifndef MYCLASSES_H 
    #define MYCLASSES_H 
    
    #include <QtGui/QMainWindow> 
    #include "ui_myclasses.h" 
    
    class MyClass1 : public QMainWindow 
    { 
        Q_OBJECT 
    public: 
        MyClass1(QWidget *parent = 0, Qt::WFlags flags = 0); 
        ~MyClass1(); 
    
        void setthemall(int number); 
    
    private: 
        Ui::MyClass1Class ui; 
        int totalnumber; 
    }; 
    
    class MyClass2 
    { 
        int param1; 
        void getit(); 
    }; 
    
    
    #endif 
    

    myclasses.cppファイル

    #include "myclasses.h" 
    
    MyClass1::MyClass1(QWidget *parent, Qt::WFlags flags) 
    : QMainWindow(parent, flags) 
    { 
        ui.setupUi(this); 
    } 
    
    MyClass1::~MyClass1() 
    { 
    } 
    
    void MyClass1::setthemall(int pnumber) 
    { 
        totalnumber=pnumber; 
    } 
    
    
    void MyClass2::getit() { 
    
    }; 
    

  • 答えて

    2

    myclasses.oファイルが欠落しているように思えます。 myclasses.oをコンパイルしてリンクしていますか?

    これはQtなので、このソースファイルをプロジェクトに追加した後に "qmake -project"を実行しましたか?

    +0

    >私は "myclasses.cpp"と "myclasses.h"をVisual Studioに含むソリューションを構築しました。 >次に、 "myclasses.h"の場所をProject PropertiesのAdditional Include Directoriesに追加しました。 >しかし、私は新しいソリューションにmyclasses.objファイルを追加しませんでした。私はそれをリンカーのプロパティに入れますか? – trante

    +0

    Visual StudioでQtを使用するものはコンパイルしていません。しかし、あなたが言及したエラーによって、myclasses.cppで定義したすべてのシンボルがリンクされていないようです。 Qtでは、makefileを生成するために "qmake"を実行し、このライブラリがQObjectから継承する定義したクラスにスロットとシグナルの機能を追加するために使用する "moc"を生成する必要があります。これをバイパスすることはできません。なぜなら、Qtはすべての作業をOKにするために「モック」に依存しているからです。オブジェクトファイルを手動でソリューションに追加する必要があるかどうかはわかりませんが、そうすることができます:D – mfontanini

    関連する問題