2011-08-29 24 views
5

私は週末にこれを理解しようと過ごしました。私は最後のステップにいます。私の目標:Visual Studio 2010とQt 4.7.3を連携させること。Visual Studio 2010 Qtリンクの問題

私は次のような構成で構築するために指定して、ソースからのQtをインストール:

configure.exe -debug&リリース-opensource -platformのWin32-msvc2010 -no-webkitの-no-フォノン-no-フォノン-backend -no-script -no-qt3support -no-multimedia -no-ltcg

コンフィギュレーション後、nmakeを実行しましたが問題はありません。

私のVisual Studio 2010ソリューションでは、2つのプロジェクトがあります。 Image Qtライブラリにリンクできないと訴えています。共通プロパティで

AssetIOは、もともとQt IDEを使用してビルドされていました。私はVisual Studio内でプロジェクトをインポートするためにQtアドインを使用しました。プロジェクトのコンパイルAssetIOは完璧に機能します。ただし、ショートプロジェクトをコンパイルすると、次のリンカーエラーが発生します。 LinkerErrors ショートプロジェクトを右クリックし、プロパティを選択します。 AssetIOを参考にしました。ここで

Include Directories

は、私はプロジェクトのために持っているライブラリ・ファイルです::、私は次のようしている構成プロパティをクリックすると、VC++ディレクトリは、ディレクトリが追加含める Library Directories むしろ、その後のディレクトリが含まれ、私の、より多くのスクリーンショットを投稿AssetIOプロジェクトは次のとおりです。 C:\ qt_source \ 4.7.3 \が含ま

AssetIOプロジェクトのための私のライブラリディレクトリは次のとおりです。C :\ 4.7.3 \ binにここ

\の簡単なソースコードですqt_source私が働きたいと思っているプロジェクトグラム(私の簡単なテストプロジェクト)

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

リンクするVSのQtライブラリファイルを指定するのを忘れていませんか?おそらく、QtCored4.lib、QtGuid4.libが必要です(dは "debug"用、リリース設定ではそれを削除します)。問題を引き起こすプロジェクトが.exeアプリケーションの場合は、Properties-> Linker-> Command Lineに移動し、角かっこなしで{Qored4.lib QtGuid4.lib}を追加します。

P.私の推奨事項:まず、Qt Creatorでプロジェクトを作成してテストします。次にqmake -tp vc -rを実行すると、VSや他の主要なプラットフォームのための完全に機能するソリューションが得られます。また、クリエイターには素敵なエディタがあります。

+0

qmakeをコマンド引数で実行すると、コマンドラインから正しいことを確認できますか?エディタとしてQtを使うつもりですが、とてもいいです。私は、visual studio 2010でexeファイルをデバッグしていたときに、私のassetIOプロジェクトに入ることができるようにしたかったのです。 – Short

4

あなたのライブラリディレクトリにはC:\qt_source\4.7.3\libが含まれていません。その後、

とは

QtCored4.lib QtGuid4.libおよびその他のQtライブラリバイオレットキリンが提案されているように必要な

が含まれます。また、uはQtクラスQDomDocumentのインスタンスを作成している場合は、 'リリースバージョン'

QtCore4.lib QtGui4.libおよびその他のQtライブラリ

CV

1

でこれを行う必要があります。 "QtXml4.lib"を追加する必要があります。 Visual Studioのにこのライブラリを追加してください。

関連する問題