スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Qt 4.7.1をVC++2008でstaticビルドしてみた

新しいPCに移った時に、Qtで開発中のプロジェクトをビルドしてみたら色々困ったことがあったので、解決したメモ。
今回解決した問題は以下の3つです。

問題1:外部シンボルの未解決やら未定義エラーが出る。
問題2:Qtと一緒に使うライブラリのランタイムライブラリが/MTD、/MTで作っていたからビルドできないよ!という時の解決。
問題3:staticビルドしたい。



問題1:
外部シンボルの未解決やら未定義エラーが出る。


新しいPCに移って、Qtのプロジェクトをビルドするとこんなエラーが出ました。

error LNK2001: 外部シンボル "___CxxFrameHandler3" は未解決です。
error LNK2001: 外部シンボル ""void *__cdecl operator new(unsigned int)" (??2@YAPAXI@Z)" は未解決です。
error LNK2001: 外部シンボル ""void __cdecl operator delete(void *)" (??3@YAXPAX@Z)" は未解決です。
error LNK2001: 外部シンボル "_memset" は未解決です。
error LNK2001: 外部シンボル ""const type info::`vftable'" (?? 7type info@@6B@" は未解決です。


これは以下で解決できます。
VisualStudioのプロパティにある『特定のライブラリを無視』の項目にあるLIBCMT(Debug時はLIBCMTD)を消す。

何か競合していたのが理由だった気がします。なぜ解決したかは忘れてしまいました。
あと未定義ですエラーのやつは、Qt以外のライブラリで以下のライブラリのリンクが足りていなかったのが、よくある原因だと思います。

winmm.lib Imm32.lib ws2_32.lib




問題2:
Qtと一緒に使うライブラリの、VisualStudioのプロジェクトのランタイムライブラリが/MTD、/MTで作っていたからビルドできないよ!という時の解決。


Qtライブラリ側を/MTDと/MTにビルドし直します。
VC2008用のビルド準備は大体ここら辺を参考にしていただいて。コマンドプロンプトは、スタートメニュー->Microsoft VisualStudio2008->VisualStudioTools->VisualStudio2008コマンドプロンプトから起動したやつでやってください。

configureする直前まで進めます。
configureで以下の設定をする。とりあえず-platform win32-msvc2008さえあればいいと思います。

configure -no-sql-sqlite -no-qt3support -no-opengl -platform win32-msvc2008
-no-libtiff -no-dbus -no-phonon -no-phonon-backend -no-webkit


configureしたら、同じフォルダにVisualStudioのプロジェクト(.vcproj)があると思いますので、VC++2008で開きます。
開いたら、プロジェクト->プロパティ->構成プロパティ->C/C++->コード生成->ランタイムライブラリで、Debugは/MDDを/MTDに、Releaseは/MDを/MTに変更してビルドします。(DLLなし設定です)
すると、/MTDと/MTになったQtライブラリがlibに出来ます。


問題3:
staticビルドしたい。

基本はstaticビルドしようとして、問題1,2が出てきたのが原因だったので、後はconfigureのオプションで以下のようにすればstatic用のlibが出来る.vcprojができます。
サンプルと、デモはstaticビルドしてもあまり意味がないのでnomakeしてます。

configure -debug-and-release -static -D _CRT_SECURE_NO_WARNINGS -platform win32-msvc2008 -nomake examples -nomake demos


こうして、問題2の通りにランタイムライブラリをDLLなしにすればexe単体で動きます。

あと、Qtプロジェクトにlibファイルを追加する時に、QtCore4.lib、QtGui4.libじゃなくて、QtCore.lib、QtGui.libに変更すればビルドが通るはずです。


解決しましたら、右下にある拍手ボタンを押していただけると、「あ、同じことで困っていた方がいたんだなー」と思って、今後も似たようなエントリーを書くと思います。
間違っている部分がありましたら、コメントなどいただけると助かります。
関連記事
スポンサーサイト

コメント

非公開コメント

プログラミング関連ブログ

ハッカーと同人作家

プログラミング関連雑多などは上記のブログにて。

twitter

プロフィール

ふぃなっぷ

Author:ふぃなっぷ
ふぃなっぷです。こんな名前だけど、男性です。
好きなことを楽しくやっていきます。同人ゲームを制作したり、本を書いたり。
同人を通じて成長していけたらなぁと思っています。

>∩( ・ω・)∩< テーレッテー
ζ*'ヮ')ζ∩< テッテッテー

ご意見、ご感想、お問い合わせはこちらからどうぞ

応援中

相州戦神館學園 万仙陣 応援中! Dies irae ~Amantes amentes~応援中!

ブロとも申請フォーム

QRコード

QRコード

FC2カウンター

エリア51

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。