【问题标题】:Qt5.0.1 static linking in Visual Studio 2012Visual Studio 2012 中的 Qt5.0.1 静态链接
【发布时间】:2013-02-14 11:12:43
【问题描述】:

我使用以下配置构建 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 插件,这对我来说也是个谜,我需要它到我的原始项目中。

【问题讨论】:

  • 你解决过这个问题吗?我遇到了同样的问题。
  • 据我记得,我必须使用 QtCreator 构建我的项目。在 Visual 中,在构建过程中存在一些冲突,不允许静态构建 Qt。

标签: c++ qt visual-studio-2012 static-linking


【解决方案1】:

我使用的是 Visual Studio 2013,但昨天我注意到完全相同的缺失链接。

您需要在 Ws2_32.lib 中添加一个依赖项。

如果您的项目编译但由于神秘的“缺少 windows 平台插件”消息而崩溃,您需要将其添加到一个 cpp 中:

Q_IMPORT_PLUGIN(QWindowsIntegrationPlugin);

这可能会添加新的依赖项。

仅供参考,这些是我用于默认 Qt 项目的依赖项(有些只需要 ANGLE):

  • winmm.lib
  • Ws2_32.lib
  • dxguid.lib
  • d3d9.lib
  • imm32.lib
  • qtmaind.lib
  • Qt5Cored.lib
  • Qt5Guid.lib
  • Qt5Widgetsd.lib
  • libEGLd.lib
  • libGL
  • ESv2d.lib
  • translator_commond.lib
  • preprocessord.lib
  • translator_hlsld.lib
  • qwindowsd.lib
  • Qt5PlatformSupportd.lib
  • %(附加依赖项)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-09-14
    • 1970-01-01
    • 1970-01-01
    • 2011-06-15
    • 1970-01-01
    • 2018-08-09
    • 1970-01-01
    • 2012-11-15
    相关资源
    最近更新 更多