是否有一个memcmp等效于比较Mono中的字节数组?

Mat*_*int 7 c c# mono bytearray memcmp

有一种通过导入所述比较在.net两字节阵列的公知效率memcmp从功能msvcrt.dll,如所描述这里.

单声道中是否有等效的库导入?在linux或Windows上运行mono时需要有所不同吗?或者是否有另一种快速字节数组比较技术在单声道中运行良好?我正在寻找比在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);
Run Code Online (Sandbox Code Playgroud)

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

寻找以单调为重点的答案.谢谢.

Rob*_*ani 6

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

而是定义"AssemblyName.dll.config"并使用dllmap标记在Mono上运行时映射msvcrt.dllc.

例:

<configuration>
    <dllmap dll="msvcrt.dll" target="libc.so.6" />
</configuration>
Run Code Online (Sandbox Code Playgroud)

有关dllmap的更多详细信息,请访问:http://www.mono-project.com/Config_DllMap

编辑

如果由于某种原因c不起作用,libc.so应该工作.

  • 阿门"不要为Mono编译单独的版本". (2认同)