2017-02-02 21 views
-3

Я пытаюсь написать простой класс на C++ с Qt5. Я не могу понять, эта ошибка возникает из:main.obj: ошибка LNK2019: неразрешенный внешний символ public: __cdecl

main.obj: ошибка LNK2019: неразрешенный внешний символ "общественность: __cdecl ItemModel :: ItemModel (класс станд :: basic_string, класс станд :: Распределитель>)" (?? 0ItemModel @@ QEAA @ V? $ Basic_string @ DU? $ Char_traits @ D @ std @@ V? $ Allocator @ D @ 2 @@ std @@@ Z) ссылка на главную функцию debug \ AMWS.exe: фатальная ошибка LNK1120: 1 неразрешенных внешних

Test.pro

QT += core 
QT -= gui 

CONFIG += c++11 

TARGET = Test 
CONFIG += console 
CONFIG -= app_bundle 

TEMPLATE = app 

HEADERS += \ 
    main.h \ 
    itemmodel.h 

SOURCES += \ 
    main.cpp \ 
    itemmodel.cpp 

itemmodel.h

#ifndef ITEMMODEL_H 
#define ITEMMODEL_H 

#include <string> 

class ItemModel 
{ 
public: 
    ItemModel(std::string sku); 
protected: 
    std::string SKU; 
}; 

#endif // ITEMMODEL_H 

itemmodel.cpp

#include "itemmodel.h" 

using namespace std; 

ItemModel::ItemModel(string sku) : SKU(sku) 
{ 

} 

main.h

#ifndef MAIN_H 
#define MAIN_H 

#include <QCoreApplication> 
#include <iostream> 
#include "itemmodel.h" 

#endif // MAIN_H 

main.cpp

#include "main.h" 
#include <string> 

using namespace std; 

int main(int argc, char *argv[]) 
{ 
    QCoreApplication a(argc, argv); 

    ItemModel product("dummy"); 

    cout << "Great!!!" << endl; 

    return a.exec(); 
} 
+0

Это недопустимый код C. Почему вы отметили его? –

+0

Это похоже на ошибку связывания Visual Studio. Пример компилируется как есть с Visual Studio 2015. Что вы используете для компилятора? –

+0

Я использую Qt5 для Windows – Steve

ответ

1

Попробуйте удалить полную сборку (включая Makefile) и перекомпилировать.

Иногда приложения Qt имеют странные ошибки компоновщика из-за того, что make-файлы не обновляются qmake, когда они должны.