AccessViolationException из c # при вызове функции, определенной в библиотеке c ++ - PullRequest
2 голосов
/ 25 февраля 2011

У нас есть библиотека 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, хотя он не передается с помощью указателя.

Любая конкретная причина для такого поведения ???

1 Ответ

3 голосов
/ 25 февраля 2011

1001 * попробовать *

[DllImport("wt3145.dll")]
private static extern int RunAnalysis(ref int Time, int Handle, ref int status);

long в C ++ отличается от long в C #.

...