У меня возникли проблемы с компиляцией проекта qt с использованием msvc2012. По какой-то причине в нем говорится, что есть неразрешенный символ, который приравнивается к функции QString, которую я не могу понять.Проблемы с Linker с QString?
Вот мой файл .pro (эта программа командной строки только, используя только Qt для удобства
QT += core gui widgets
TARGET = klc2abuspro
CONFIG += console
CONFIG -= app_bundle
TEMPLATE = app
SOURCES += main.cpp \
key.cpp \
klayout.cpp \
deadkey.cpp
HEADERS += \
key.h \
klayout.h \
deadkey.h
OTHER_FILES +=
и вот где проблема линкер относится к:
{
QString file;
if(argc < 2)
{
qDebug() << "No file specified. Defaulting to russian.klc";
file = "russian.klc";
}
else
file = argv[1];
QFile input(file);
if(!input.open(QIODevice::ReadOnly | QIODevice::Text))
qDebug() << "File could not be opened";
QTextStream in(&input);
QString str;
KLayout * layout = new KLayout(file.split(".", QString::SkipEmptyParts)[0]);
while(!in.atEnd() && !(str = in.readLine()).contains("LAYOUT"));
in.readLine(); in.readLine(); in.readLine();in.readLine();
bool currChunk = true;
while(currChunk)
{
str = in.readLine();
if(str == "")
{
currChunk = false;
break;
}
QStringList parts = str.split("\t",QString::SkipEmptyParts);
layout->addKey(new Key(parts[0].toUInt(0,16),parts[3], parts[4]));
}
input.close();
//Starting deadkey finder
if(!input.open(QIODevice::ReadOnly | QIODevice::Text))
return -1;
QTextStream pass(&input);
while(!pass.atEnd() && !(str = pass.readLine()).contains("KEYNAME_DEAD"));
pass.readLine();
DeadKey * dkeys[10];
int i = 0;
while((str = pass.readLine()) != "") {
//qDebug() << "Line: " << str;
QStringList parts = str.split("\t",QString::SkipEmptyParts);
//1 is the name, 0 is the unicode value of the character
layout->addDeadKey(dkeys[i] = new DeadKey(parts[1], parts[0]));
i++;
}
//qDebug() << layout->printDeadKeys();
input.close();
// Find deadkey modifiers
bool cont = true;
i = 0;
input.open(QIODevice::ReadOnly | QIODevice::Text);
do {
while(!pass.atEnd() && !(str = pass.readLine()).contains("DEADKEY") && !(str.contains("KEYNAME")));
if(str.contains("KEYNAME")) {
cont = false;
break;
}
pass.readLine();
while((str = pass.readLine()) != "") {
//qDebug() << "Line: " << str;
QStringList parts = str.split("\t",QString::SkipEmptyParts);
//1 is the name, 0 is the unicode value of the character
//qDebug() << "Key to modify: " << parts[0] << "key result: " << parts[1];
dkeys[i]->addModifier(QChar(parts[0].toUInt(0,16)), QChar(parts[1].toUInt(0,16)));
}
i++;
}while(cont);
layout->implementModifiers();
//qDebug() <<layout->printMods();
layout->exportToQML(file.replace(".klc",".qml"));
return 0;
}
Погрешность линкер
main.obj:-1: error: LNK2019: unresolved external symbol "__declspec(dllimport) public: class QString & __cdecl QString::operator=(class QString &&)" ([email protected]@[email protected][email protected]@Z) referenced in function main