gpt4 book ai didi

c# - 是否有一个 memcmp 等价物用于比较 Mono 中的字节数组?

转载 作者:太空狗 更新时间:2023-10-29 17:10:07 26 4
gpt4 key购买 nike

通过从 msvcrt.dll 导入 memcmp 函数,在 .Net 中比较两个字节数组的效率众所周知,如 here 所述.

在单声道中是否有等效的库导入?在 Linux 或 Windows 上运行单声道时是否需要有所不同?或者是否有另一种在单声道中运行良好的快速字节数组比较技术?我正在寻找比在 C# 中遍历数组更好的东西。

更新

根据 Matt Patenaude 的评论,我认为这可能很有效:

#if __MonoCS__
[DllImport("c", CallingConvention = CallingConvention.Cdecl)]
#else
[DllImport("msvcrt.dll", CallingConvention = CallingConvention.Cdecl)]
#endif
public static extern int memcmp(byte[] b1, byte[] b2, UIntPtr count);

不过我还没试过。我以前从未在单声道上做过 p/invoke。我正在使用 pinvoke.net 上推荐的签名.这会兼容吗?

寻找以单色为主的答案。谢谢。

最佳答案

根据您的更新,您不应使用 __MonoCS__ 预处理器。这意味着您必须为 Mono 和 .NET 重新编译库。更好的方法是在 Mono 中使用 dllmap 功能,并且只使用 msvcrt.dll DllImport。

而是定义一个“AssemblyName.dll.config”并使用 dllmap 标签在 Mono 上运行时将 msvcrt.dll 映射到 c .

例子:

<configuration>
<dllmap dll="msvcrt.dll" target="libc.so.6" />
</configuration>

这里有更多关于 dllmap 的细节:http://www.mono-project.com/Config_DllMap

编辑

如果由于某种原因 c 不工作,libc.so 应该可以工作。

关于c# - 是否有一个 memcmp 等价物用于比较 Mono 中的字节数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13923857/

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