1

Qt 4.8.4 を使用して、Visual Studio 2010 でプロジェクトをコンパイルしようとしています。

ビルドすると、次のようなリンカー エラーが発生します。

error LNK2001: external symbol "__declspec(dllimport) public: class QByteArray & __thiscall QByteArray::operator=(class QByteArray &&)" (__imp_??4QByteArray@@QAEAAV0@$$QAV0@@Z) not resolved
error LNK2001: external symbol "__declspec(dllimport) public: class QString & __thiscall QSTring::operator=(class QString &&)" (__imp_??QString@@QAEAAV0@$$QAV0@@Z) not resolved

リンカにムーブ コンストラクタが表示されますが、C++11 の機能は使用していません。

リンカ エラーは、次のようなコードを記述したファイルに表示されます。

QByteArray xTmpArray;
QString    xString;
...
xTmpArray = xString.toAscii();

割り当て行にコメントを付けると、リンク エラーが表示されなくなります (QString 割り当ても同様です)。

これらのリンク エラーを解消するにはどうすればよいですか?

4

4 に答える 4

2

解決しました。移動コンストラクターをサポートしない Visual Studio 2008 でコンパイルされたライブラリが提供されたため、(当然のことながら) リンクの問題でした。VS2010でコンパイルされた正しいバージョンを使用しましたが、すべて正常に動作します。

于 2013-06-04T10:58:55.823 に答える
1

私はこのコードを書きました:

#include <QString>
#include <QByteArray>

int main() {
    QString s("a");
    QByteArray ba = s.toAscii();
    return 0;
}

私はコマンドでそれをコンパイルしています:

g++ -I /usr/include/qt4/QtCore/ -I/usr/include/qt4/ qtuse.cpp -lQtCore -o qtuse

そして、私は問題ありません。プログラムを QtCore にリンクするのを忘れているようです。

プロジェクトの設定を確認してください。Qt の lib dir をリンク パスに追加する必要があります。

于 2013-06-04T10:15:07.623 に答える
0

Microsoft Visual Studio 2015行く:

(Project properties)->General->Platform Toolset

そしてそれをに設定しますvisual studio 2013 (v120)

これは私のために働いています:)

于 2015-09-10T09:13:53.220 に答える
0

このエラーは、MSVC とビルド済みの Qt バイナリの間にバージョンの不一致がある場合に発生します。そうしないでください。

MSVC2015 を使用している場合は、ビルド前の MSVC2015 Qt ライブラリにリンクする必要があります。

于 2016-11-28T04:16:41.763 に答える