问题遇到的现象和发生背景
Qt C++报错
:-1: error: 1 duplicate symbol for architecture x86_64
:-1: error: linker command failed with exit code 1 (use -v to see invocation)
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [Applestore.app/Contents/MacOS/Applestore] Error 1
问题相关代码,请勿粘贴截图
mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <iostream>
#include <QString>
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow;}
QT_END_NAMESPACE
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
signals:
void mysignal();
private slots:
void on_cancel_clicked();
void on_register_new_clicked();
private:
Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
register.h
#ifndef REGISTER_H
#define REGISTER_H
#include <QWidget>
namespace Ui {
class Register;
}
class Register : public QWidget
{
Q_OBJECT
public:
explicit Register(QWidget *parent = nullptr);
private:
Ui::Register* ui;
signals:
void mysignal_in();
private slots:
void on_pushButton_clicked();
};
struct Information_register
{
QString account_infor[80];
QString password_infor[80];
};
#endif // REGISTER_H
main.cpp
#include "mainwindow.h"
#include "register.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
Register r;
w.show();
QObject::connect(&w,SIGNAL(mysignal()),&r,SLOT(mysignal_in()));
return a.exec();
}
mainwindow.cpp
#include "mainwindow.h"
#include "./ui_mainwindow.h"
#include <QString>
#include <QFile>
#include <stdio.h>
#include <QDataStream>
#include "register.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_cancel_clicked()
{
this->close();
}
void MainWindow::on_register_new_clicked()
{
this->hide();
emit mysignal();
}
register.cpp
#include "ui_register.h"
#include "register.h"
#include <QString>
#include <QFile>
#include <stdio.h>
#include <iostream>
#include <QDataStream>
Register::Register(QWidget *parent)
: QWidget{parent}
,ui(new Ui::Register)
{
ui->setupUi(this);
}
void Register::mysignal_in()
{
this->show();
}
void Register::on_pushButton_clicked()
{
Information_register infor[5]={
{ui->account->text(),ui->password->text()}
};
QFile information("/Users/liushanyu/untitled/information.txt");
information.open(QIODevice::WriteOnly);
QDataStream stream(&information);
stream<<infor[0].account_infor[79]<<infor[0].password_infor[79]<<20;
information.close();
}
运行结果及报错内容
怕只看代码不太直观,还是把截图发一下。
mainwindow.h
register.h
main.cpp
mainwindow.cpp
register.cpp
我的解答思路和尝试过的方法
我发现把register.cpp里面的
void Register::mysignal_in()
{
this->show();
}
注释掉就好了,这是什么原因呢