Xcode 5.0.1、Mac OS 10.9、Qt-Creator 3.0 ベータ版を使用しようとしています。
32 ビットのサードパーティ ライブラリで Qt 5.2 を使用する必要があるため、Qt とアプリを 32 ビットにしたいと考えています。はい、2013 年であることはわかっていますが、今のところ、選択の余地はありません。
Qt 5.2 (ベータ版) を次のようにビルドし、「make」と「make install」を行いました。大丈夫だ。
./configure -debug-and-release -commercial -confirm-license -nomake examples -platform macx-clang-32 -arch x86 -no-sql-db2 -no-sql-ibase -no-sql-mysql -no-sql-oci -no-sql-odbc -no-sql-psql -no-sql-symbian -no-sql-symsql -no-sql-tds -prefix ~/dev/qt5
ここで、単純な「Hello World」アプリケーションを作成して Qt 5.2 をテストしたいと考えました。しかし、私の Qt は 32 ビット用にビルドされており、Qt のバージョンとキットが設定されていて、"Clang (/usr/bin の x86 32 ビット) をコンパイラとして使用しているにもかかわらず、リンク エラーが発生する私の "hello world" アプリケーションは x86_64 用にビルドされています。
最初に警告が表示されます:
"...QtGui.framework/QtGui, file was built for i386 which is not the architecture being linked (x86_64)... QtWidgets.framework/QtWidgets, file was built for i386 which is not the architecture being linked (x86_64)...... etc"
次に、エラー自体が発生します。
Undefined symbols for architecture x86_64:
"qt_assert(char const*, char const*, int)", referenced from:
QScopedPointer<QObjectData, QScopedPointerDeleter<QObjectData> >::operator->() const in moc_mainwindow.o
"QArrayData::deallocate(QArrayData*, unsigned long, unsigned long)", referenced from:
QTypedArrayData<unsigned short>::deallocate(QArrayData*) in mainwindow.o
"QStatusBar::QStatusBar(QWidget*)", referenced from:
Ui_MainWindow::setupUi(QMainWindow*) in mainwindow.o
"QMainWindow::addToolBar(QToolBar*)", referenced from: ..... etc
これを *.Pro ファイルに追加してみました:
CONFIG += qt x86
CONFIG -= x86_64
しかし、それでも X86_64 をビルドしようとします。
hello-world アプリケーションを強制的に 32 ビット用にビルドし、ビルドした 32 ビット Qt フレームワークと互換性を持たせるにはどうすればよいですか?
ありがとう。