gpt4 book ai didi

c++ - 如何安装在 windowsservercore Docker 镜像上执行 native C++ DLL/EXE 所需的所有依赖二进制文件

转载 作者:可可西里 更新时间:2023-11-01 10:12:59 27 4
gpt4 key购买 nike

我在将 native C++ DLL 用于 Windowsservercore Docker 容器上的 C# .NET 核心应用程序时遇到问题。尝试使用来自 C# .NET Core 应用程序的 pInvoke 从 native DLL 调用公开的 API 时出现以下错误。

错误:无法加载 DLL“MyDLL”:找不到指定的模块。 (HRESULT 异常:0x8007007E)

问题:我的 windows docker 容器(从 windowsservercore 基础镜像构建)有一个 C# .net 核心服务在特定的 POST 请求上运行..我需要从 native C++ DLL 调用函数,我使用 pInvoke 调用它。现在的问题是 native DLL 没有加载,因为它的一些依赖项在容器镜像中丢失了。我尝试安装可能的 VC++ 可再发行组件。但它没有解决问题。所以在检查完整的依赖项树时(使用依赖项 walker ) 我开始知道 windowsservercore 基础 docker 镜像中缺少一些系统库。以下是 docker 容器中一些缺失库的列表。

c:\windows\system32\ELSCORE.DLL
c:\windows\system32\DEVMGR.DLL
c:\windows\system32\DCOMP.DLL
c:\windows\system32\DSREG.DLL
c:\windows\system32\SHDOCVW.DLL
c:\windows\system32\COREUICOMPONENTS.DLL
c:\windows\system32\POLICYMANAGER.DLL
c:\windows\system32\OPENGL32.DLL

所以我的问题是,如何解决那些系统级库对容器的依赖?我知道出于显而易见的原因(最小化图像大小),这些库被排除在基本 windowsservercore docker 图像之外。但是有没有任何标准的方法/安装程序/包可以将缺少的系统库安装到我的 docker 镜像中?或者我应该手动将所有需要的库复制到 system32 文件夹中

PS:同样的代码在安装 VC++ 可再发行组件后可在主机(Windows Server 2016)上运行,只是它不能在 windowsservercore Docker 容器上运行(即使在安装了上述 VC++ 可再发行组件之后)。

谢谢,-苛刻

最佳答案

目前使用当前发布的 windows 服务器 docker 镜像,您无法执行依赖于上述系统库的 native 二进制文件。为了使其在已发布的 Windows Server Docker 容器上运行,我们必须等待下一个 Windows Docker 镜像(具有更大的占用空间和更多可用功能)的发布。

关于c++ - 如何安装在 windowsservercore Docker 镜像上执行 native C++ DLL/EXE 所需的所有依赖二进制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51173889/

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