Я провел выходные, пытаясь понять это, и я на последнем шаге.Моя цель: заставить Visual Studio 2010 и Qt 4.7.3 работать вместе.
Я установил Qt из источника, указав сборку со следующей конфигурацией:
configure.exe -debug-and-release -opensource -platform win32-msvc2010 -no-webkit -no-phonon-no-phonon-backend -no-script -no-scripttools -no-qt3support -no-multimedia -no-ltcg
После настройки я запустил nmake, без проблем.
В моемРешение Visual Studio 2010, у меня есть два проекта. Он жалуется, что не может связать библиотеки Qt.В общих свойствах
AssetIO изначально был построен с использованием Qt IDE, и я использовал надстройку Qt в Visual Studio для импорта проекта.Компиляция проекта AssetIO работает отлично.Однако компиляция проекта Short приводит к следующим ошибкам компоновщика: Щелкните правой кнопкой мыши проект Short, выберите свойства.Я добавил AssetIO в качестве ссылки.Нажав на Свойства конфигурации, каталоги VC ++, я добавил следующие добавленные каталоги:
Вот файлы библиотеки, которые у меня есть для проекта: Вместо того, чтобы публиковать больше скриншотов, я включаюкаталоги для проекта AssetIO: C: \ qt_source \ 4.7.3 \ include
каталог моей библиотеки для проекта AssetIO: C: \ qt_source \ 4.7.3 \ bin
Вотпростой исходный код проекта, который я пытаюсь получить (мой простой тестовый проект)
main.cpp
int main(int argc, char* argv[])
{
AssetIO::LevelLoader a;
a.dostuff();
return 0;
}
LevelLoader.h
#ifndef LEVELLOADER_HPP
#define LEVELLOADER_HPP
namespace AssetIO
{
class LevelLoader {
public:
explicit LevelLoader();
~LevelLoader();
void dostuff();
};
}
#endif // LEVELLOADER_HPP
LevelLoader.cpp
#include "LevelLoader.hpp"
#include <QDomDocument>
#include <QFile>
#include <QDebug>
#include <QString>
using namespace AssetIO;
enum ComponentType { Drawable = 0, Position };
// This will definitely be changed, to return a full-blown component. Passing the tagname directly to the
// component factory.
ComponentType ConvertToComponentType(QString tagName)
{
if(tagName.toLower() == "Drawable") {
return Drawable;
}
else if(tagName.toLower() == "Position") {
return Position;
}
else {
// LOG
exit(EXIT_FAILURE);
}
}
LevelLoader::LevelLoader()
{
}
LevelLoader::~LevelLoader()
{
}
void LevelLoader::dostuff()
{
QDomDocument doc("la");
QFile file("../../../Resources/input.sto");
if(!file.open(QIODevice::ReadOnly)) {
// TODO: log this, something
exit(EXIT_FAILURE);
}
if( !doc.setContent(&file)) {
// TODO: log
file.close();
}
// we close the file now the doc has control (i think)
file.close();
// Read the root element
QDomElement root = doc.documentElement();
if(root.tagName() != "Root") {
// TODO: log
exit(EXIT_FAILURE);
}
// Read the Header Info
QDomNode headerNode = root.firstChild();
QDomElement e = headerNode.toElement();
if(e.tagName().toLower() != "HeaderInfo") {
// LOG
}
QDomNodeList componentNode = headerNode.childNodes();
int s = componentNode.count();
QString componentTag(componentNode.at(0).toElement().tagName());
QDomNamedNodeMap a = componentNode.at(0).attributes();
}
Я не могу понять, что я делаю неправильно.У кого-нибудь есть какие-либо идеи?Я искал везде решение.