声明slots函数报错:fatal error LNK1120

阅读更多

今天掉了一次粪坑,新起项目:

class AcConsole : public QMainWindow
{
	Q_OBJECT

private slots:
	void buttonConnectClick(); 

public:
	AcConsole(QWidget *parent = Q_NULLPTR);

private:
	Ui::AcConsoleClass ui;

};

通常在头文件中声明的函数,VS会提示自动补全cpp中的实现。

 

但这次vs没有提示补全 buttonConnectClick函数,编译报错:

1>moc_AcConsole.obj : error LNK2019: 无法解析的外部符号 "private: void __cdecl AcConsole::buttonConnectClick(void)" (?buttonConnectClick@AcConsole@@AEAAXXZ),该符号在函数 "private: static void __cdecl AcConsole::qt_static_metacall(class QObject *,enum QMetaObject::Call,int,void * *)" (?qt_static_metacall@AcConsole@@CAXPEAVQObject@@W4Call@QMetaObject@@HPEAPEAX@Z) 中被引用
1>D:\VisualStudio2015\Projects\ac-console\x64\Debug\\ac-console.exe : fatal error LNK1120: 1 个无法解析的外部命令

狠狠懵圈了一把,到处核对其它项目的配置。最后只要手工补全CPP中的实现,就不报错了。之后第二个slots声明,VS又可以提示自动补全。

 

过于依赖IDE的恶果。

 

你可能感兴趣的:(声明slots函数报错:fatal error LNK1120)