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上推荐的签名.这会兼容吗?
寻找以单调为重点的答案.谢谢.
根据您的更新,您不应该使用__MonoCS__预处理器.这意味着你必须为Mono和.NET重新编译库.更好的方法是dllmap在Mono中使用功能并仅使用msvcrt.dllDllImport.
而是定义"AssemblyName.dll.config"并使用dllmap标记在Mono上运行时映射msvcrt.dll到c.
例:
<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应该工作.