C++ 如何在Qt中正确添加类(.cpp和.h文件)

C++ 如何在Qt中正确添加类(.cpp和.h文件),c++,qt,linker,C++,Qt,Linker,所以我在VisualStudio中编写了一些类(它们在VS中工作),并将它们添加到Qt中。当我指向一个类时,一切都很好。然而,如果我创建这个类,我会得到关于2个方法的2个“未解析的外部符号”错误(类中只有2个)。其中一个看起来像这样: mainwindow.obj:-1: error: LNK2001: unresolved external symbol "protected: virtual void __cdecl SRT::processInputLine(class Subtitles

所以我在VisualStudio中编写了一些类(它们在VS中工作),并将它们添加到Qt中。当我指向一个类时,一切都很好。然而,如果我创建这个类,我会得到关于2个方法的2个“未解析的外部符号”错误(类中只有2个)。其中一个看起来像这样:

mainwindow.obj:-1: error: LNK2001: unresolved external symbol "protected: virtual void __cdecl SRT::processInputLine(class Subtitles &,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" (?processInputLine@SRT@@MEAAXAEAVSubtitles@@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z)
类Subtitle继承vector,其中Subtitle是另一个类

如果我将这些定义粘贴到这个文件中(我知道我不应该这样做),我只会得到与这些方法使用的其他类相同的错误,而不是前两个错误。Qt是否未正确链接.cpp文件?为什么只有在创建类时才会发生链接错误,而不是在创建类之前?有什么想法吗?谢谢

编辑1:这是我的.pro文件:

    # deprecated API in order to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS

# You can also make your code fail to compile if you use deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0


SOURCES += main.cpp\
    mainwindow.cpp \
    Subtitles.cpp \
    MicroDVD.cpp \
    MPlayer.cpp \
    Subtitle.cpp \
    TimeStamp.cpp \
    SRT.cpp \
    SubtitleIO.cpp

HEADERS  += mainwindow.h \
    globalVariables.h \
    Exceptions.h \
    MicroDVD.h \
    MPlayer.h \
    Subtitle.h \
    Subtitles.h \
    TimeStamp.h \
    SRT.h \
    SubtitleIO.h

FORMS    += mainwindow.ui

DISTFILES += \
    SubtitleEditor.pro.user

如您所见,其中包括.h和.c文件。我正在试图找出如何运行qmake…

您应该将它们添加到您的pro文件中,如:

HEADERS += yourClass.h
SOURCES += yourClass.cpp
运行qmake,它应该可以正常编译

单击构建->运行qmake


快速解释:qmake为您的项目创建makefile。因此,无论何时添加类,都应运行它以确保所有内容都得到更新。

您应将它们添加到pro文件中,如:

HEADERS += yourClass.h
SOURCES += yourClass.cpp
运行qmake,它应该可以正常编译

单击构建->运行qmake

快速解释:qmake为您的项目创建makefile。因此,无论何时添加类,都应该运行它以确保所有内容都得到更新

我想知道如何运行qmake

在控制台上使用
qmake.exe yourProFile.pro
。或者,所有IDE都提供了运行qmake的方法。如果您正在使用Qt Creator,请调用
Build>运行qmake

我想知道如何运行qmake


在控制台上使用
qmake.exe yourProFile.pro
。或者,所有IDE都提供了运行qmake的方法。如果您正在使用Qt Creator调用
Build>Run qmake

它们被添加到了pro文件中,我已经用.pro文件的内容编辑了这个问题。谢谢,伙计,我花了整整一天的时间试图找出我的代码出了什么问题lol@DusanMilosevic确保您不会再次陷入困境:)它们已添加到pro文件中,我用.pro文件的内容编辑了这个问题。谢谢,伙计,我花了一整天的时间试图找出我的代码出了什么问题lol@DusanMilosevic确保您不会再次陷入困境:)