我正在尝试使用 Mono 中托管代码中的 libgsasl 库。我还有其他一些电话在工作,但这个特别的电话让我很适应。我不断收到我“尝试读取或写入受保护的内存。这通常表明其他内存已损坏”的异常。这显然不好。我相信我的问题可能出在双重间接 Gsasl_session 参数中,但我不确定。
本机函数定义如下:
extern GSASL_API int gsasl_client_start (Gsasl * ctx, const char *mech, Gsasl_session ** sctx);
我已将托管外部定义为:
[DllImport("libgsasl-7.dll", CharSet = CharSet.Auto)] [SuppressUnmanagedCodeSecurity] [ReliabilityContract(Consistency.WillNotCorruptState, Cer.MayFail)] public static extern int gsasl_client_start( GsaslContext context, string mechanism, ref GsaslSession session);
GsaslContext 和 GsaslSession 是继承自 SafeHandle 的类。
你可以在文档中看到这个方法的使用。