VC++ Redistributable 2012 or 2013 or 2015?
VC++ Redistributable 2012 or 2013 or 2015?
我有一个用QT编写的应用程序。之前我使用的是Visual Studio 2012和Qt 5.3.1,之后我最近升级到了Visual Studio 2015和Qt 5.6。我以前会提供msvcp110和msvcr110作为安装的一部分(我知道这不是最好的做法,但我侥幸逃脱了)。
升级后,由于VS 2015的变化,我现在不得不安装VC++2015。我不介意这些更改,目前正在提供要安装的redist包。
我面临的问题是,我必须提供VC++2012以及最近在Windows 8.1 Pro中运行该软件,我被要求提供VC++2013以及(从未使用VS2013进行编译)。诊断结果来自依赖walker和谷歌。不仅如此,我还必须安装所有3个版本的VC++的x86和x64才能启动该软件(老实说,我甚至不会开始)。
- 为什么我现在只使用Visual Studio 2015,却需要VC++2012和2013
- 如何摆脱其他redist包?是我写的依赖代码吗?如果是的话,我有机会知道吗
- 当我在64位编译器中严格编译时,为什么我需要同时提供32位和64位版本
- 有没有任何方法可以在没有依赖助行器的情况下进行诊断?当应用程序根本拒绝启动时,是否可以进行一些日志记录
很抱歉发了这么长的帖子,但这里的任何光线都可以恢复我的理智。
提前谢谢。
-
您正在使用链接到旧运行时的DLL。您可以在开发机器上使用Dependency Walker来跟踪这一点,不需要在客户机器上安装任何工具。
-
将应用程序附带的所有文件迁移到针对VC++2015构建的版本。
-
你没有提供任何可以揭示原因的细节。
-
对于语言运行库以外的DLL,可以使用延迟加载,然后能够捕获加载库的失败。但是你不能有效地延迟加载msvcr*.dll。一种选择是创建一个非常瘦的EXE,它根本不使用支持DLL(使用纯Win32 API,或静态链接运行时),除了安装错误处理程序,然后加载现在以DLL形式存在的主程序外,什么都不做。加载主程序DLL应该使用延迟加载链接或
LoadLibrary()
+GetProcAddress()
来完成——任何一种都允许捕获错误。这个主程序DLL可以像往常一样自由地导入运行时DLL。
- Visual Studio 2015:Extern "C" 和 "export" 关键字
- 瓦尔格林德:数学函数"Conditional jump or move depends on uninitialised value(s)"
- C++核心准则 C35 对于接口类"A base class destructor should be either public and virtual, or protected and nonv
- 使用模板进行堆栈实现; "name followed by :: must be a class or namespace"
- vs 2015 constexpr变量不恒定,但与2019相比还好吗
- Android NDK clang 编译器错误在 Windows 上显示'No such file or directory'
- 从VS 2015更新3更新到VS2015更新3 d后浮点计算行为不同的原因
- VS 2015 链接错误 无法构建依赖于 libcurl 的项目
- 模式"allocate memory or use existing data"
- N-API include an .so or dll
- 已解决 - C++ 的崇高文本中的"fatal error: opencv: no such file or directory"
- 将 OR 逻辑运算符从 C++ 转换为 Fortran
- CPP 中的瓦尔格林德和记忆泄漏:"Conditional jump or move depends on uninitialised values"
- Qt Visual Studio 2015 加载项编译问题
- 我如何将 OR 与 if 语句一起使用字符串
- 将 if 语句中的字符与 or 进行比较
- 包含在 <WinSock2> Visual Studio 2015 中时出现错误
- Google Or-Tools Glop:如何创建指向 const 对象的指针数组?
- 当初始值设定项是基类名时'initializer does not name a non-static data member or base class'错误
- VC++ Redistributable 2012 or 2013 or 2015?