我想使用下面的代码使用memcmp函数比较2个字节的数组
[DllImport("msvcrt.dll",EntryPoint = "memcmp", CallingConvention = CallingConvention.Cdecl)]
static extern int memcmp(byte[] b1, byte[] b2, long count);
当我在Windows上运行我的应用程序时,它运行良好。但是当我在Linux上运行它时,它给出了以下异常
Unable to load shared library 'msvcrt.dll' or one of its dependencies. In order to help diagnose loading problems, consider setting the LD_DEBUG environment variable: libmsvcrt.dll: cannot open shared object file: No such file or directory
下面是docker文件
FROM microsoft/dotnet:2.2-sdk AS build-env
WORKDIR /app
COPY *.csproj ./
COPY NuGet.Config ./
RUN dotnet restore
# copy everything else and build
COPY . ./
RUN dotnet publish -c Release -o out
# build runtime image
FROM microsoft/dotnet:2.2-runtime
WORKDIR /app
COPY --from=build-env /app/out .
ENTRYPOINT ["dotnet", "XXX.dll", "YYY.dll"]
请让我知道我该怎么用?
答案 0 :(得分:2)
您不能仅在Linux上使用“ Windows” DLL。仅仅因为您在Linux上具有.NET Core运行时,并不意味着您可以使用其他平台/ OS上的其他库/可执行文件。
您应该找到一些其他代码,这些代码可以比较两个字节数组或作为基础OS坚持使用Windows。
答案 1 :(得分:0)
@Damien_The_Unbeliever。谢谢你的帮助。 我使用了以下代码
if (((ReadOnlySpan<byte>)slice).SequenceCompareTo((ReadOnlySpan<byte>)masterSlice) == 0)
isEqual = true;