У нас есть библиотека C ++, в которой некоторые методы определены и экспортированы и используются нашим приложением .NET (V 3.5). В библиотеке c ++ функция определяется следующим образом
int DLLEXPORT RunAnalysis(long *time, long handle, int *Status)
{
// some code...
}
в .Net сборке
Декларация
[DllImport("wt3145.dll")]
private static extern int RunAnalysis(ref long Time, long Handle, ref int status);
Использование
// Some work..
ErrorCode = RunAnalysis(Time, ref Handle, ref Status);
// Some other work
каждый раз, когда встречается этот вызов, возникает исключение AccesViolationException. это решается только тогда, когда я передаю второй параметр с ключевым словом ref
, хотя он не передается с помощью указателя.
Любая конкретная причина для такого поведения ???