0

CentOS 5.9 でコンパイルする場合 [ gcc version 4.1.2 20080704 (Red Hat 4.1.2-54)]。私のアプリケーションは、次のエラーでコンパイルに失敗しています:

/opt/qt64/4.7.3/include/QtCore/qendian.h: In function ‘T qbswap(T) [with T = long long unsigned int]’:
/opt/qt64/4.7.3/include/QtCore/qendian.h:278: error: ‘bswap_64’ was not declared in this scope
/opt/qt64/4.7.3/include/QtCore/qendian.h: In function ‘T qbswap(T) [with T = unsigned int]’:
/opt/qt64/4.7.3/include/QtCore/qendian.h:282: error: ‘bswap_32’ was not declared in this scope
/opt/qt64/4.7.3/include/QtCore/qendian.h: In function ‘T qbswap(T) [with T = short unsigned int]’:
/opt/qt64/4.7.3/include/QtCore/qendian.h:286: error: ‘bswap_16’ was not declared in this scope

コードは MSVC2010 と Fedora 9 [ ] で正しくコンパイルされるため、Qt 4.7.3 に問題はないと思います [ gcc version 4.3.0 20080428 (Red Hat 4.3.0-8) (GCC)] どちらも問題なく Qt 4.7.3 に対してコンパイルされます。

私の質問は、GCC に次のいずれかまたはすべてを教えてもらう方法はありますか?コードを修正するには?

4

1 に答える 1

2

最終的に、この問題の解決策は、インクルード パスの前に名前が付けられたファイルがあり、byteswap.hそれが の stdlib バージョンの前にインクルードされていたということでしbyteswap.hた。そのファイルに の定義が含まれていなかったbswap_64bswap_32bswap_16コンパイラ エラーが生成されたためです。

修正はbyteswap.h、サードパーティ ライブラリ内の の名前を競合しない別の名前に変更することでした。

于 2013-12-31T15:02:01.533 に答える