2016-03-21 4 views
0

Qtの「デスクトップ用Qt 5.5 64ビット版(MSVC 2013)」のvcvarsallでWindows上でコンパイルしようとしている単純なQtアプリケーションがあります。バットは実行された。私の.PROファイルでWindows上のCLIでQtアプリケーションをコンパイルしようとするとリンカーエラーが発生する

qmake -version 

QMake version 3.0 
Using Qt version 5.5.1 in C:/Qt/5.5/msvc2013_64/lib 

私は、特別な何かを持っているだけのソースとヘッダとしません。

QT += xml 
QT -= gui 

ときI:

qmake 

そして:

nmake 

コンパイルは正常ですが、tのようなエラーが発生します彼のリンク:

foo.obj : error LNK2019: unresolved external symbol "__declspec(dllimport 
) public: class QJsonValue __thiscall QJsonObject::value(class QString 
const &)const "([email protected]@@[email protected]@[email protected]@@Z) 
referenced in function ... 

このアプリケーションのコンパイルと私はCLIでそれをコンパイルしようとするので、私は何をしないのですQtのCreatorで、それをコンパイルするときに正常に動作?

また、Ubuntuのシェルで問題なくコンパイルできます。

答えて

0

これは、リンカーがDLLを検出できないためです。リンカーのdllの場所を指定する必要があります。 Qt Creatorでは、DLLはQtバージョンへのパスによって指定されます。 あなたは私が最終的に元の問題が何であったか実現(cmakeのはこれについて明確なエラーを与えた)CMakeのでこれをしようとした後、あなたのコマンド

+0

どうすればパスを追加できますか?私がUbuntuでコンパイルするとき、 'qmake && make 'は同じプロジェクトファイルで十分です...なぜWindowsではどうですか? Qtのコマンドプロンプトへのショートカットを使っています。すべての環境変数を設定する必要があります。 – user2061057

+0

Windowsは時々奇妙なのでWindowsでは動作しません;-) Qt/binフォルダがあなたのPATH変数にあるかどうか調べます。 Btw:Visual Studioを使用してWindowsでコンパイルしてみませんか? – Liachtei

+0

Visual Studioを使用する理由は何ですか? Qt CreatorはQt開発のための最高のIDEです。これはとにかくCLIアプリケーションです。私のアプリはすでにQt Creatorで動作しているので、Visual Studioの違いを理解できません。 QtのbinフォルダはPATHにあります。私が言ったように、すべての環境変数が設定されたコマンドプロンプトにQtのショートカットを使用しているからです。 – user2061057

0

にrequiered QtのDLLへのパスを追加する必要があります:私はvcvarsall.bat呼び出されていたamd64パラメータなしで、そうリンカーは、ツールチェーン32-bitを持つ64-bitライブラリを使用しようとしました。もちろん、その結果のエラーはいつものように混乱していました。

私は再び実行:

vcvarsall.bat amd64 

を...と私はnmakeを使ってQtのコマンドプロンプト環境でコンパイルし、qmakeはとCMakeの両方にリンクすることができました。

Linuxでは、すべてがデフォルトで64ビットに設定されているため、このようなことは起こりません。

関連する問題