Я взаимодействую с собственной сторонней C ++ DLL через C #, и предоставленный уровень взаимодействия выглядит следующим образом:
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);
Обратите внимание, что в определении Ctern есть только два параметра, поскольку функция C ++ предоставляет значение по умолчанию для третьего параметра.Это правильно?Я получал некоторые недетерминированные результаты при использовании предоставленного определения, но когда я добавил третий параметр, как показано ниже, он, кажется, работает правильно каждый раз, а не спорадически.
[DllImport("csvcomm.dll")]
public static extern int CSVC_ValidateCertificate(byte[] certDER, int length,
int context);
Есть идеи?Будет ли добавление 3-го параметра действительно решить эту проблему?