Неуправляемый экспорт System.MissingMethodException - PullRequest
0 голосов
/ 31 августа 2018

У меня есть две функции getStatus () и checkStatus (), которые я раскрыл с помощью UnmanagedExports. Я могу успешно вызывать их отдельно от кода C ++. Но когда я вызываю первую функцию getStatus () из второй функции checkStatus (), я получаю MissingMethodException. Следующий код для независимых функций работает нормально:

[DllExport(ExportName = "GetStatusMethod", CallingConvention = CallingConvention.StdCall)]
[return: MarshalAs(UnmanagedType.LPWStr)]
public static string getStatus([MarshalAs(UnmanagedType.LPWStr)]string Url)
{
    string status;
    //performing some action
    return status;
}

[DllExport(ExportName = "CheckStatusMethod", CallingConvention = CallingConvention.StdCall)]
[return: MarshalAs(UnmanagedType.LPWStr)]
public static string checkStatus([MarshalAs(UnmanagedType.LPWStr)]string someStr)
{
    string status;
    //performing some action
    return status;
}

следующие броски MissingMethodException:

[DllExport(ExportName = "GetStatusMethod", CallingConvention = CallingConvention.StdCall)]
[return: MarshalAs(UnmanagedType.LPWStr)]
public static string getStatus([MarshalAs(UnmanagedType.LPWStr)]string Url)
{
    string status;
    //performing some action
    return status;
}

[DllExport(ExportName = "CheckStatusMethod", CallingConvention = CallingConvention.StdCall)]
[return: MarshalAs(UnmanagedType.LPWStr)]
public static string checkStatus([MarshalAs(UnmanagedType.LPWStr)]string someStr)
{
    return getStatus();// throws MissingMethodException
}

Как вызвать функцию (которая предоставляется с помощью UnmanagedExports) из другой открытой функции в c #?

...