QPrinter链接器无法找到文件

Xyz*_*yzk 1 c++ printing linker qt

当我尝试在我的代码中的任何地方声明QPrinter时,我收到以下错误:

Error   1   error LNK2019: unresolved external symbol "__declspec(dllimport)      
public: virtual __thiscall QPrinter::~QPrinter(void)" (__imp_??1QPrinter@@UAE@XZ) 
referenced in function "private: void __thiscall ezXpns::on_loginButton_clicked(void)" (?
on_loginButton_clicked@ezXpns@@AAEXXZ)  
(path)\TestBuild_April3\TestBuild\ezxpns.obj    TestBuild

Error   2   error LNK2019: unresolved external symbol "__declspec(dllimport) 
public: __thiscall QPrinter::QPrinter(enum QPrinter::PrinterMode)" (__imp_??
0QPrinter@@QAE@W4PrinterMode@0@@Z) referenced in function "private: void __thiscall 
ezXpns::on_loginButton_clicked(void)" (?on_loginButton_clicked@ezXpns@@AAEXXZ)  
(path)\TestBuild_April3\TestBuild\ezxpns.obj    TestBuild
Run Code Online (Sandbox Code Playgroud)

搜索后我发现它暗示,链接器可以找到方法声明,但不能找到方法本身.而且,任何提及它似乎都失败了QPrinter.我认为这可能是因为这种方法在QT5中被折旧,但似乎QT打印机通信的新方法尚未发布.可能是什么问题呢?#IFDEFQPrinter文件中的预处理器声明?

我的包括:

#include <QtWidgets/QMainWindow>
#include "ui_ezxpns.h"
#include "Vector2D.h"
#include <QtPrintSupport\qprinter.h>
#include <QtPrintSupport\qprintdialog.h>
#include <QtPrintSupport\qtprintsupportglobal.h>
#include <qapplication.h>
Run Code Online (Sandbox Code Playgroud)

Fra*_*eld 8

我假设你没有为你的项目启用QtPrintSupport.您可以通过添加启用它

QT += printsupport
Run Code Online (Sandbox Code Playgroud)

到您的.pro文件.

有关更多信息,请阅读此处.

  • 我使用 Visual Studio,没有 .pro 文件。从 qt 菜单创建 pro 文件,并将此行添加到其中似乎没有帮助。我应该更改 vcxproj 文件吗? (2认同)
  • 好的,找到了怎么做.右键单击您的项目,QTproject设置,允许PrintSupport. (2认同)