gpt4 book ai didi

c++ - 应用程序无法从 WinSxS 加载 Win32 程序集

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:52:54 28 4
gpt4 key购买 nike

我有一个 Win32 程序集(我的 .NET 代码上的 C++/CLI 包装器),它应该安装在 WinSxS 中,并且应该由使用 API 的客户端应用程序从该位置引用。我对如何在 WinSxS 中安装 Win32 程序集进行了一些研究,最终能够通过使用 mainfest 和目录文件来完成它。

现在的问题是我无法使用我为测试目的而创建的控制台应用程序中的程序集。我添加了一个 <dependency> exe list 的部分以引用程序集(如下所示),但它不起作用。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<dependency>
<dependentAssembly>
<assemblyIdentity name="MyAssembly" processorArchitecture="x86" publicKeyToken="10f783dc6145a3s0" type="win32" version="1.0.0.58">
</assemblyIdentity>
</dependentAssembly>
</dependency>
</assembly>

exe 失败并显示错误消息:程序无法启动,因为您的计算机缺少 MyAssembly.dll。尝试重新安装程序以解决此问题。

在检查 Procmon 时,似乎 exe 仅在 exe 位置和 Path 环境变量中指定的所有位置中搜索 dll。当我将 dll 的 WinSxS 位置放在 Path 变量中并执行该应用程序时,它可以正常工作。我想知道在生成导致问题的 exe list 时是否缺少任何其他项目设置。想法?

最佳答案

原来是UAC项目设置的问题。将 UAC 属性设置为“否”解决了问题,应用程序现在可以加载程序集,而无需使用添加到 PATH 变量等变通方法。

关于c++ - 应用程序无法从 WinSxS 加载 Win32 程序集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25301161/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com