2011-08-29 22 views
5

Hafta sonu bunu anlamaya çalışırken son adımı attım. Amacım: birlikte çalışmak için görsel stüdyo 2010 ve Qt 4.7.3 almak.Visual Studio 2010 Qt Bağlantı Sorunu

configure.exe -debug-ve-bırakma -opensource -platform Win32-msvc2010 -no-webkit -No-fonon -No-fonon:

aşağıdaki yapılandırma ile oluşturmak için belirten bir kaynaktan Qt yüklü -back -no-script -no-scripttools -no-qt3support -no-multimedia -no-ltcg

Yapılandırmadan sonra nmake, problem yaşamadım.

Görsel stüdyo 2010 çözümümde iki projem var. Image Qt kitaplıklarını bağlayamadığından şikayetçi. Ortak özellikler

AssetIO özgün olarak Qt IDE kullanılarak oluşturuldu ve ben Visual Studio içinde Qt eklentisini kullanarak projeyi içeri aktardım. AssetIO projesini derlemek gayet iyi çalışıyor. Ancak, kısa projenin derlenmesi aşağıdaki linker hatalarının sonucudur: LinkerErrors Kısa projeye sağ tıklayın, özellikleri seçin. AssetIO’yu referans olarak ekledim. İşte

Include Directories

Ben proje için var kütüphane dosyalarıdır: Ben şu var Yapılandırma özelliklerine tıklandığında, VC++ Dizinler dizinleri eklendi Dahil Library Directories Ziyade için dizinleri dahil Gözat daha ekran görüntüleri yayınlamak AssetIO projedir: C: \ qt_source \ 4.7.3 \ dahil

AssetIO projesi için benim kütüphane dizinidir: C : \ 4.7.3 \ bin Burada

\ basit kaynak kodu qt_source Projeyi yapmaya çalışıyorum g (benim basit bir test projesi)

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(); 
} 

ben yanlış yapıyorum bilemiyorum. Herhangi bir fikri olan var mı? Çözüm için her yere baktım.

cevap

5

VS ile ilgili Qt lib dosyalarını belirtmeyi unutmadınız mı? Muhtemelen QtCored4.lib, QtGuid4.lib (d "hata ayıklama" için, sürüm yapılandırmada kaldır) ve belki de başkalarına ihtiyacınız olacaktır. Size sorun veren proje, .exe uygulamasıysa, Özellikler -> Bağlayıcı -> Komut Satırı'na gidin ve parantez olmadan {Qored4.lib QtGuid4.lib} dosyasını ekleyin.

S. S. Tavsiyem: önce, Qt Creator'da bir proje oluşturun ve test edin. Daha sonra qmake -tp vc -r'yi çalıştırın - ve VS ya da başka bir büyük platform için mükemmel bir çözüm elde edersiniz. Ayrıca, Yaratıcı'nın güzel bir editörü var, beğenebilirsin.

+0

Çalışmaya çalıştım, komut argümanlarıyla qmake'yi çalıştırarak komut satırından mı kastediyorsunuz? Qt'yi bir editör olarak kullanmayı planlıyorum, çok güzel. Görsel stüdyo 2010'da exe hatalarını ayıklarken sadece varlıklı projeme adım atmak istedim. – Short

4

Kitaplık dizinlerinizin C:\qt_source\4.7.3\lib eksik olduğunu görüyorum.Sonra

Ve

QtCored4.lib QtGuid4.lib ve diğer herhangi bir Qt kütüphaneleri Violet Zürafa önerildiği gibi gerekli

sayılabilir. Ayrıca 'Yayın sürüm'

QtCore4.lib QtGui4.lib ve diğer herhangi bir Qt kütüphaneleri

CV u Qt sınıfının QDomDocument örneğini oluşturduysanız

1

ile yapmanız gerekir. "QtXml4.lib" eklemek gerekli olabilir. Lütfen bu kütüphaneyi Visual studio yani Project->properties->Linker->Input====> Additional Dependencies'a ekleyin.