在Docker Windows容器中运行.exe报错-1073741515如何解决?
错误原因
你返回的错误码-1073741515对应十六进制值0xC0000135,是Windows系统标准错误STATUS_DLL_NOT_FOUND,意思是程序运行时找不到依赖的动态链接库。
你本地用GCC(通常是MinGW/GCC编译环境)编译的C++程序默认采用动态链接模式,编译生成的hello.exe依赖MinGW运行时库,比如常见的libgcc_s_dw2-1.dll、libstdc++-6.dll等组件。而你使用的mcr.microsoft.com/dotnet/runtime:5.0Windows基础镜像没有预装这类MinGW运行库,因此运行exe时报错。
解决方案
可任选以下一种方式解决:
- 本地编译时改为静态链接。编译
hello.exe时给GCC添加-static参数,示例命令:g++ hello.cpp -o hello.exe -static。静态编译的二进制文件会把所有依赖的运行库打包进exe本身,不需要系统额外提供运行时,拷贝进容器即可直接运行。 - 把
hello.exe依赖的运行库一起拷贝进容器。你可以本地用dumpbin /dependents hello.exe命令查看该exe具体依赖哪些dll,将这些dll和hello.exe一起拷贝到容器的/App目录下即可正常运行。
内容的提问来源于stack exchange,提问作者Sorin-Alexandru Cristescu
相关产品推荐
相关产品推荐

