我使用以下配置构建 Qt:
-platform win32-msvc2012 -no-icu -no-angle -opengl desktop -static -qt-sql-mysql -qt-plugins-mysql -nomake demos -nomake examples
一切顺利。顺便提一句。我还在 qmake.conf 中将 win32-msvc2012 mkspecs /MD 更改为 /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 上这样做:1)项目属性 -> C/C++ -> 代码生成 -> 运行时库我设置为 MT 2)项目属性-> 常规 -> 使用 MFC 我设置为在静态库中使用 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 插件,这对我来说也是一个谜,我需要它到我的原始项目中。