- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在构建一个带有静态链接的 Qt 独立应用程序,遵循 this guide .我遵循了除最后一个步骤之外的每个步骤,最后一个步骤包括将 list 嵌入到可执行文件中,并且该应用程序在许多机器上运行良好;但是,我发现了一个无法启动可执行文件的地方,因为计算机中缺少 MSVCP140.dll。这个错误很可能是由于我没有包含 list 这一事实造成的。确实,在上面的指南中明确写道:
[...] you should execute mt.exe to embed a manifest inside the application to avoid error such as missing MSVCP90.dll when the application is started on other computers
我的两个问题是:
最佳答案
如果您不想重新分发 DLL,则需要将 CRT 静态链接到应用程序中。如果你这样做了,你就不会收到关于 DLL 丢失的错误。您的应用不会使用 DLL,因为它是静态链接的。
请注意,这与链接到 Qt 库不同。您可能正在静态链接它们,但忘记了静态链接 CRT。
如果您使用的是 Visual Studio,您会在此处找到合适的旋钮:
项目 → 属性 → 配置 → C/C++ → 代码生成 → 运行时库。
对于您将分发的发布版本,请确保将其设置为 /MT
。多线程是当今唯一可用的选项。您不需要发布版本的“调试”版本,如果您是静态链接,则不需要 DLL 版本。确保所有您的项目在这里设置为相同的选项,以及您链接的任何其他静态库。一切都需要使用相同版本的CRT以避免兼容性问题。
如果您使用不同的 IDE/编译器工具集,则需要查阅其文档以了解如何配置这些设置。你没有在问题中提到具体的一个。
至于 list ,是的,所有 Windows 应用程序都应包含 list 。 list 中具体包含哪些内容取决于您的应用程序正在做什么以及您支持哪些 Windows 功能。但是有 99% 的可能性您想要指示对公共(public)控件版本 6 的支持。您还需要将自己标记为 UAC 感知。 85% 的可能性您正在编写不需要管理权限的标准应用程序,因此您的 list 将指定 asInvoker
。 list 中也可以包含其他内容,例如 DPI 感知、Windows 版本支持等。MSDN documentation包含更多详细信息,特别是有关 Application Manifests 的部分.
标准应用程序的示例 list 可能如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3" manifestVersion="1.0">
<!-- Enable use of version 6 of the common controls (Win XP and later) -->
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="*"
publicKeyToken="6595b64144ccf1df"
language="*" />
</dependentAssembly>
</dependency>
<!-- Indicate UAC compliance, with no need for elevated privileges (Win Vista and later) -->
<!-- (if you need enhanced privileges, set the level to "highestAvailable" or "requireAdministrator") -->
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
</requestedPrivileges>
</security>
</trustInfo>
<!-- Indicate high API awareness (Win Vista and later) -->
<!-- (if you support per-monitor high DPI, set this to "True/PM") -->
<application xmlns="urn:schemas-microsoft-com:asm.v3">
<windowsSettings>
<dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware>
</windowsSettings>
</application>
<!-- Declare support for various versions of Windows -->
<ms_compatibility:compatibility xmlns:ms_compatibility="urn:schemas-microsoft-com:compatibility.v1" xmlns="urn:schemas-microsoft-com:compatibility.v1">
<ms_compatibility:application>
<!-- Windows Vista/Server 2008 -->
<ms_compatibility:supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}" />
<!-- Windows 7/Server 2008 R2 -->
<ms_compatibility:supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}" />
<!-- Windows 8/Server 2012 -->
<ms_compatibility:supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}" />
<!-- Windows 8.1/Server 2012 R2 -->
<ms_compatibility:supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}" />
<!-- Windows 10 -->
<ms_compatibility:supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" />
</ms_compatibility:application>
</ms_compatibility:compatibility>
</assembly>
list 是一个简单的文本文件,遵循 Microsoft 定义的 XML 架构,您可以使用 SDK 工具将其链接到应用程序的二进制文件中。具体来说,mt.exe
为你做这件事,将 list 合并到二进制文件中。通常这是在链接时完成的。 Microsoft 的链接器会自动为您完成。我不确定其他供应商的链接器。您当然可以调用 mt.exe
来为您完成构建后的步骤。只要您安装了 Windows SDK,它就会在您的计算机上。 .示例命令:
mt.exe -manifest MyApp.exe.manifest -outputresource:MyApp.exe;#1
如果您要签署二进制文件,请确保在嵌入 list 后签署,因为此步骤(显然)会更改二进制文件,从而使签名无效。
关于windows - 如何为 Qt 独立应用程序创建 list 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37792366/
我想使用 R 预定义这样的列表 DATA<-list( list(list(),list(),list()), list(list(),list(),list()), list(list(),l
如何将一个列表添加到另一个列表,返回一个列表的列表? foo :: [a] -> [a] -> [[a]] 例如,我想要的结果是: foo [1,2] [3,4] 将是 [[1,2], [3,4]]。
我还没有在这里找到类似问题的解决方案,所以我会寻求你的帮助。 有 2 个列表,其中之一是列表列表: categories = ['APPLE', 'ORANGE', 'BANANA'] test_re
这个问题不同于Converting list of lists / nested lists to list of lists without nesting (这会产生一组非常具体的响应,但无法解决
原始列表转换为 List正好。为什么原始列表的列表不能转换为 List 的列表? { // works List raw = null; List wild = raw; } {
在下面的代码中,get()被调用并将其结果分配给类型为 List> 的变量. get()返回 List>并在类型参数为 T 的实例上调用设置为 ? ,所以它应该适合。 import java.util
原始列表转换为 List正好。为什么原始列表的列表不能转换为 List 的列表? { // works List raw = null; List wild = raw; } {
在insufficiently-polymorphic 作者说: def foo[A](fst: List[A], snd: List[A]): List[A] There are fewer way
我有下面的代码有效。 class ListManipulate(val list: List, val blockCount: Int) { val result: MutableList>
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 5 年前。 Improve this ques
在 scala (2.9) 中转换列表列表的最佳方法是什么? 我有一个 list : List[List[A]] 我想转换成 List[A] 如何递归地实现这一点?或者还有其他更好的办法吗? 最佳答案
我编写了这个函数来确定给定元素是否存储在元组列表的列表中,但目前它只搜索第一个列表。我将如何搜索其余列表? fun findItem (name : command, ((x,y)::firstlis
我创建了一个类名 objectA,它有 4 个变量:约会时间;字符串文本;变量 1,变量 2 我需要创建一个 ObjectA() 列表。然后首先按时间对它们进行分组,其次按 var1,然后按 var2
我有一套说法 char={'J','A'} 和列表的列表 content = [[1,'J', 2], [2, 'K', 3], [2, 'A', 3], [3,'A', 9], [5, 'J', 9
我有以下列表 List >>> titles = new ArrayList >>> ();我想访问它的元素,但我不知道该怎么做.. 该列表有 1 个元素,它又包含 3 个元素,这 3 个元素中的
转换 List[List[Long]] 的最佳方法是什么?到 List[List[Int]]在斯卡拉? 例如,给定以下类型列表 List[List[Long]] val l: List[List[Lo
我有一个来自 Filereader (String) 的 List-List,如何将其转换为 List-List (Double):我必须返回一个包含 line-Array 的第一个 Values 的
我收集了List> 。我需要将其转换为List> 。这是我尝试过的, List> dataOne = GetDataOne(); var dataTwo = dataOne.Select(x => x
这个问题在这里已经有了答案: Cannot convert from List to List> (3 个答案) 关闭 7 年前。 我没有得到这段代码以任何方式编译: List a = new Ar
这个问题在这里已经有了答案: Cannot convert from List to List> (3 个答案) 关闭 7 年前。 我没有得到这段代码以任何方式编译: List a = new Ar
我是一名优秀的程序员,十分优秀!