在另一个解决方案 c++ 中创建对象时出现 LNK2019 错误

发布于 2024-10-16 09:05:44 字数 1728 浏览 10 评论 0原文

我正在尝试使用另一个 C++ 解决方案的文件来创建对象。

  • 当我创建 MyClass1 对象程序时出现错误:

    1>main.obj : 错误 LNK2019: 函数 _main 中引用了无法解析的外部符号“public: virtual __thiscall MyClass1::~MyClass1(void)” (??1MyClass1@@UAE@XZ)
    1>main.obj:错误 LNK2019:无法解析的外部符号“public:__thiscall MyClass1::MyClass1(class QWidget *,class QFlags)”(??0MyClass1@@QAE@PAVQWidget@@V?$ QFlags@W4WindowType@Qt@@@@@Z) 在函数 _main 中引用
    
  • 当我创建 MyClass2 对象时,程序创建该对象。没有错误。

我应该怎么做才能正确创建 MyClass1 对象?


我删除了相关来源中所有不必要的部分。代码如下。

测试程序文件 ma​​in.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() {

};

I'm trying to create objects by using another c++ solution's files.

  • When I create a MyClass1 object program gives error of:

    1>main.obj : error LNK2019: unresolved external symbol "public: virtual __thiscall MyClass1::~MyClass1(void)" (??1MyClass1@@UAE@XZ) referenced in function _main
    1>main.obj : error LNK2019: unresolved external symbol "public: __thiscall MyClass1::MyClass1(class QWidget *,class QFlags<enum Qt::WindowType>)" (??0MyClass1@@QAE@PAVQWidget@@V?$QFlags@W4WindowType@Qt@@@@@Z) referenced in function _main
    
  • When I create a MyClass2 object program creates the object. No error.

What should I do to create the MyClass1 object properly?


I cut all unnecessary parts in relevant source. The code is as follows.

tester file 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 file

#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 file

#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() {

};

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

小巷里的女流氓 2024-10-23 09:05:44

似乎 myclasses.o 文件丢失了。您确定正在编译并链接 myclasses.o 吗?

由于这是 Qt,因此您将此源文件添加到项目后是否运行了“qmake -project”?

It seems like the myclasses.o file is missing. Are you sure you're compiling and linking myclasses.o?

Since this is Qt, have you run "qmake -project" after you added this source file to your project?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文