次の構成で Qt をビルドします。
-platform win32-msvc2012 -no-icu -no-angle -opengl desktop -static -qt-sql-mysql -qt-plugins-mysql -nomake demos -nomake examples
そしてすべてがうまくいきました。ところで。また、win32-msvc2012 mkspecs /MD の qmake.conf を静的リンク用に /MT に変更しました (いくつかの指示に従って)。今、静的リンクを使用して、Visual Studio 2012 で最も単純なアプリケーションを構築しようとしています。だから私は簡単なプロジェクト(Qt Visual Add-inからのこの基本的なもの)を作成します:
#include "test.h"
#include <QtWidgets/QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
test w;
w.show();
return a.exec();
}
(テストは単なるプレーンウィンドウです)そして、Visual Studio 2010で行っていたので覚えている2つのことを設定します:1)プロジェクトプロパティ-> C / C ++->コード生成->ランタイムライブラリ私はMTに設定2)プロジェクトプロパティ-> 一般 -> MFC の使用 i が静的ライブラリで MFC を使用するように設定されている
もちろん、Qt プロジェクト設定で、Qt の静的バージョンを設定しました。この構成では、非常に多くのエラーが発生します – http://pastebin.com/6ve3pFUh [pastebin.com] すべてのライブラリ (すべてだと思います) は、Qt アドイン (qtmain.lib Qt5Core.lib Qt5Gui.lib) によって追加されました。 Qt5Widgets.lib)。MFC の使用を標準の Windows ライブラリを使用する既定値に設定すると、次のようになります。
1> Creating library D:\Visual Studio 11\Projects\test\Win32\Release\test.lib and object D:\Visual Studio 11\Projects\test\Win32\Release\test.exp
1>Qt5Core.lib(qeventdispatcher_win.obj) : error LNK2019: unresolved external symbol _WSAAsyncSelect@16 referenced in function "private: void __thiscall QEventDispatcherWin32::createInternalHwnd(void)" (?createInternalHwnd@QEventDispatcherWin32@@AAEXXZ)
1>D:\Visual Studio 11\Projects\test\Win32\Release\\test.exe : fatal error LNK1120: 1 unresolved externals
何が起こっているのか全くわかりません。Visual Studio 2010 と Qt 4.8 では、すべてこの方法で問題なく動作します。追加する必要がある外部依存関係について何かを読みましたが、それについてはわかりません。ところで、QtCreator ではこの静的リンクはうまく機能しますが、MySQL プラグインが表示されません。これは私にとって謎であり、元のプロジェクトに必要です。