2011-08-29 12 views
5

मैंने सप्ताहांत को यह समझने की कोशिश की और मैं अंतिम चरण में हूं। मेरा लक्ष्य: दृश्य स्टूडियो 2010 और क्यूटी 4.7.3 को एक साथ काम करने के लिए।विजुअल स्टूडियो 2010 क्यूटी लिंक समस्या

मैं स्रोत से क्यूटी स्थापित है, निम्न कॉन्फ़िगरेशन के साथ निर्माण करने के लिए निर्दिष्ट करने:

configure.exe -debug और रिहाई -opensource -platform Win32-msvc2010 -no-वेबकिट -no-phonon -no-phonon -बैकेंड -नो-स्क्रिप्ट -no-scripttools -no-qt3support -no-multimedia -no-ltcg

कॉन्फ़िगरेशन के बाद, मैं nmake भाग गया, कोई समस्या नहीं।

मेरे विजुअल स्टूडियो 2010 समाधान में, मेरे पास दो परियोजनाएं हैं। Image यह शिकायत कर रहा है कि यह क्यूटी पुस्तकालयों को लिंक नहीं कर सकता है। सामान्य गुणों में

एसेटियो मूल रूप से क्यूटी आईडीई का उपयोग करके बनाया गया था, और मैंने परियोजना आयात करने के लिए दृश्य स्टूडियो के भीतर क्यूटी एडिन का उपयोग किया था। प्रोजेक्ट को संकलित करना एसेटियो पूरी तरह से ठीक काम करता है। हालांकि, निम्न लिंकर त्रुटियों में लघु परियोजना परिणामों को संकलित करना: LinkerErrors लघु परियोजना पर राइट क्लिक करें, गुणों का चयन करें। मैंने एसेटियो को एक संदर्भ के रूप में जोड़ा। विन्यास गुण पर क्लिक करने से कुलपति ++ निर्देशिकाएँ, मैं निम्नलिखित है शामिल निर्देशिका कहा:

Include Directories यहाँ मैं इस परियोजना के लिए राशि पुस्तकालय फ़ाइलें हैं: Library Directories बल्कि तो अधिक स्क्रीन शॉट्स पोस्ट, मेरे लिए निर्देशिका में शामिल AssetIO परियोजना है: C: \ qt_source \ 4.7.3 \ शामिल

AssetIO परियोजना के लिए मेरे पुस्तकालय निर्देशिका है: C: \ qt_source \ 4.7.3 \ बिन

यहाँ के सरल स्रोत कोड है परियोजना मैं काम करने की कोशिश कर रहा हूँ जी (मेरे साधारण परीक्षण परियोजना)

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

मैं समझ नहीं मैं गलत तरीके से क्या कर रहा हूँ। क्या किसी के पास कोई विचार है? मैंने समाधान के लिए हर जगह देखा है।

उत्तर

5

क्या आप वीएस के लिए लिंक करने के लिए क्यूटी lib फ़ाइलों को निर्दिष्ट करना भूल गए हैं? आपको शायद QtCored4.lib की आवश्यकता होगी, QtGuid4.lib (डी "डीबग" के लिए है, इसे रिलीज़ कॉन्फ़िगरेशन में हटा दें), और, शायद कुछ अन्य। यदि प्रोजेक्ट जो आपको परेशानी देता है .exe एप्लिकेशन है - इसके गुणों पर जाएं-> लिंकर-> कमांड लाइन और ब्रैकेट के बिना {Qored4.lib QtGuid4.lib} जोड़ें।

पी एस। मेरी सिफारिश: सबसे पहले, क्यूटी निर्माता में एक परियोजना बनाएं और इसका परीक्षण करें। फिर qmake -tp vc -r चलाएं - और आपको वीएस या किसी अन्य प्रमुख मंच के लिए एक पूरी तरह से काम करने वाला समाधान मिल जाएगा। इसके अलावा, निर्माता के पास एक अच्छा संपादक है, आपको यह पसंद हो सकता है।

+0

मुझे कमांड तर्क के साथ qmake चलाने के द्वारा काम करने के लिए मिला, आप कमांड लाइन से सही मतलब है? मैं क्यूटी को एक संपादक के रूप में उपयोग करने की योजना बना रहा हूं, यह बहुत अच्छा है। जब मैं विजुअल स्टूडियो 2010 में एक्सई डिबग कर रहा था तो मैं बस अपने एसेटियो प्रोजेक्ट में कदम उठाने में सक्षम होना चाहता था। – Short

4

मुझे लगता है कि आपकी लाइब्रेरी निर्देशिका C:\qt_source\4.7.3\lib अनुपलब्ध है, इसे शामिल करें।

और फिर

QtCored4.lib QtGuid4.lib और किसी भी अन्य क्यूटी पुस्तकालयों

के रूप में वायलेट जिराफ सुझाव की आवश्यकता शामिल हैं। तुम भी 'रिलीज संस्करण'

QtCore4.lib QtGui4.lib और किसी भी अन्य क्यूटी पुस्तकालयों

सीवी

1

यू Qt वर्ग QDomDocument का उदाहरण बनाया है, तो के साथ ऐसा करने की जरूरत है। "QtXml4.lib" जोड़ना आवश्यक हो सकता है। कृपया इस lib को विजुअल स्टूडियो यानी Project->properties->Linker->Input====> Additional Dependencies में जोड़ें।

संबंधित मुद्दे