1

我有一个非常基本的 C# .NET Core 2.0 应用程序,它使用 OpenCV 的几个非常基本的功能作为概念证明。

我试图在 nanoserver 容器中运行它,最终部署为 IoT Edge 模块,但我收到一条错误消息,提示它无法找到 DLL 文件。

Unhandled Exception: System.TypeInitializationException: The type initializer for 'OpenCvSharp.NativeMethods' threw an exception. --->
System.DllNotFoundException: Unable to load DLL 'OpenCvSharpExtern': The specified module could not be found. (Exception from HRESULT: 0x8007007E)

我试过用 justdotnet publish IoTCoreCSharp.csproj和 with编译dotnet publish IoTCoreCSharp.csproj --runtime win10-x64 --configuration Debug --force,都没有运气。

我的 Docker 文件如下所示:

FROM microsoft/dotnet:2.0.0-runtime-nanoserver-1709

ARG EXE_DIR=.

WORKDIR /app

COPY $EXE_DIR/ ./

COPY system32_opencvsharp_deps/ C:/Windows/System32

CMD ["dotnet" "IoTCoreCSharp.dll"]

system32_opencvsharp_deps 包含 avicap32.dll、avifil32.dll、msacm32.dll、msvfw32.dll 和 vcruntime140.dll。OpenCvSharpExtern.dll 位于我们正在执行的 DLL 文件目录的根目录中。

该程序windowsservercore在我的开发机器上完美地安装在基于 .NET 的映像中运行,但这种映像不能在我们需要的 Windows 10 IoT Core 上运行。

尝试在 IoT Core 上运行时出错:

c:\Program Files\docker\docker.exe: Error response from daemon: container
e9da3baa806f161153fdb7f60a9401a5ff46c32a959499cbe0bd822b1fc0dda3 encountered an error during Start: failure in a
Windows system call: The compute system exited unexpectedly. (0xc0370106).
4

1 回答 1

0

你可以参考这个示例。此示例展示了如何在以 microsoft/dotnet-framework:4.7.1-windowsservercore-1709 作为基础映像的 Windows 容器中运行 OpenCVSharp。它表明您遇到了同样的问题。

于 2018-04-17T07:48:31.787 回答