我通过C语言与本地第三方C++ DLL接口,提供的互操作层如下:
C#:
[DllImport("csvcomm.dll")]
public static extern int CSVC_ValidateCertificate(byte[] certDER, int length);
C++:
CSVC_Status_t CSVCOMM_API CSVC_ValidateCertificate(BYTE* certDER, DWORD length,
DWORD context = CONTEXT_DEFAULT);
注意,C语言外部定义中只有两个参数,因为C++函数为第三个参数提供默认值。是这样吗?在使用提供的定义时,我收到了一些不确定的结果,但是当我添加下面这样的第三个参数时,它似乎每次都正常工作,而不是零星地工作。
[DllImport("csvcomm.dll")]
public static extern int CSVC_ValidateCertificate(byte[] certDER, int length,
int context);
有什么想法吗?添加第三个参数真的能解决这个问题吗?