我有一个非常基本的C#.NET Core 2.0应用程序,它使用OpenCV的几个非常基本的功能作为概念证明。
我试图在纳米服务器容器中运行它,最终将其部署为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)
我尝试使用dotnet publish IoTCoreCSharp.csproj
和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).
答案 0 :(得分:0)
您可以参考this sample。此示例演示如何在具有microsoft / dotnet-framework的Windows容器中运行OpenCVSharp:4.7.1-windowsservercore-1709作为基本映像。它表示您遇到的问题相同。