「Qtの設定 - エラー」の版間の差分

提供:MochiuWiki - SUSE, Electronic Circuit, PCB
ナビゲーションに移動 検索に移動
(ページの作成:「== 概要 == ここでは、Qt CreatorおよびQt Designerに関する様々なエラーと解決方法を記載する。<br> <br><br> == エラー : LNK1158 == エラ…」)
 
21行目: 21行目:
解決方法<br>
解決方法<br>
  多重インクルードが発生しているため、多重インクルードを回避する。
  多重インクルードが発生しているため、多重インクルードを回避する。
<br><br>
== Qt WebEngine使用時のビルドエラー ==
Qt 5において、Qt WebEngine(QWebEngineViewクラス等を使用して、<code>QT += webengine</code>を有効にする時)を使用してビルドする時、以下に示すようなビルドエラーが発生する場合がある。<br>
# ビルドエラーの例
/usr/bin/ld: /<Qt 5のインストールディレクトリ>/<Qt 5のバージョン>/gcc_64/lib/libQt5WebEngineCore.so: .dynsym local symbol at index 3 (>= sh_info of 3)
/usr/bin/ld: /<Qt 5のインストールディレクトリ>/<Qt 5のバージョン>/gcc_64/lib/libQt5WebEngineCore.so: .dynsym local symbol at index 5 (>= sh_info of 3)
/usr/bin/ld: /<Qt 5のインストールディレクトリ>/<Qt 5のバージョン>/gcc_64/lib/libQt5WebEngineCore.so: .dynsym local symbol at index 6 (>= sh_info of 3)
... 略
<br>
これを回避するには、以下に示す2つの方法がある。<br>
* 方法 1
** まず、binutils-goldライブラリをインストールする。
**: <code>sudo zypper install binutils-gold</code>
** 次に、Qtプロジェクトファイル(.pro拡張子)において、リンカーフラグを設定する。
**: <code>CONFIG += use_gold_linker</code>
*: <br>
* 方法 2
** まず、lldライブラリをインストールする。<br>なお、LLVMのソースコードから、ビルドおよびインストールしてもよい。
**: <code>sudo zypper install lld</code>
** 次に、Qtプロジェクトファイル(.pro拡張子)において、リンカーフラグを設定する。
**: <code>CONFIG += use_lld_linker</code>
** もし、CMakeを使用している場合は、CMakeファイルにおいて、リンカーフラグを指定する。
**: <code>if (UNIX)</code>
**:: <code>set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fuse-ld=gold")</code>
**:: <code>set(CMAKE_CC_FLAGS "${CMAKE_CC_FLAGS} -fuse-ld=gold")</code>
**:: <code>set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fuse-ld=gold")</code>
**: <code>endif()</code>
<br><br>
<br><br>


__FORCETOC__
__FORCETOC__
[[カテゴリ:Qt]]
[[カテゴリ:Qt]]

2022年6月24日 (金) 09:51時点における版

概要

ここでは、Qt CreatorおよびQt Designerに関する様々なエラーと解決方法を記載する。


エラー : LNK1158

エラー内容

fatal error LNK1158: cannot run ‘rc.exe’が発生する


解決方法

C:\Program Files (x86)\Windows Kits\<バージョン名>\bin\x64ディレクトリにあるrc.exeとrcdll.dllを
C:\Program Files (x86)\Microsoft Visual Studio <バージョン名>\VC\bin\amd64にコピーする。


詳細は、以下のWebサイトを参照すること。
http://motchy99.blog.fc2.com/blog-entry-97.html


エラー : LNK2005

エラー内容

fatal error LNK2005 * mainwindow.obj:-1: エラー: LNK2005: "class QDataStream & __cdecl operator<<(class QDataStream &,class Person const &)" (??6@YAAEAVQDataStream@@AEAV0@AEBVPerson@@@Z) は既に main.obj で定義されています。


解決方法

多重インクルードが発生しているため、多重インクルードを回避する。



Qt WebEngine使用時のビルドエラー

Qt 5において、Qt WebEngine(QWebEngineViewクラス等を使用して、QT += webengineを有効にする時)を使用してビルドする時、以下に示すようなビルドエラーが発生する場合がある。

# ビルドエラーの例

/usr/bin/ld: /<Qt 5のインストールディレクトリ>/<Qt 5のバージョン>/gcc_64/lib/libQt5WebEngineCore.so: .dynsym local symbol at index 3 (>= sh_info of 3)
/usr/bin/ld: /<Qt 5のインストールディレクトリ>/<Qt 5のバージョン>/gcc_64/lib/libQt5WebEngineCore.so: .dynsym local symbol at index 5 (>= sh_info of 3)
/usr/bin/ld: /<Qt 5のインストールディレクトリ>/<Qt 5のバージョン>/gcc_64/lib/libQt5WebEngineCore.so: .dynsym local symbol at index 6 (>= sh_info of 3)
... 略


これを回避するには、以下に示す2つの方法がある。

  • 方法 1
    • まず、binutils-goldライブラリをインストールする。
      sudo zypper install binutils-gold
    • 次に、Qtプロジェクトファイル(.pro拡張子)において、リンカーフラグを設定する。
      CONFIG += use_gold_linker

  • 方法 2
    • まず、lldライブラリをインストールする。
      なお、LLVMのソースコードから、ビルドおよびインストールしてもよい。
      sudo zypper install lld
    • 次に、Qtプロジェクトファイル(.pro拡張子)において、リンカーフラグを設定する。
      CONFIG += use_lld_linker
    • もし、CMakeを使用している場合は、CMakeファイルにおいて、リンカーフラグを指定する。
      if (UNIX)
      set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fuse-ld=gold")
      set(CMAKE_CC_FLAGS "${CMAKE_CC_FLAGS} -fuse-ld=gold")
      set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fuse-ld=gold")
      endif()