Проблема повреждения памяти для функции cbainscan from cbw32.dll
Я использую cbw32.dll импортированный из кода VB в моем коде c# метод cbAInScan() из этой библиотеки dll вызывает попытку чтения или записи защищенной памяти. Это часто является признаком того, что другая память повреждена ошибка'
Что я уже пробовал:
Я пытался использовать обновленные cbw32.dll dll,
изменена опция JIT из опции свойства проектного решения
попытался изменить недопустимый инвариантный параметр в настройках исключения
Richard MacCutchan
Не меняйте вещи, пока не узнаете, что нужно изменить. Первое, что нужно сделать, - это использовать свой отладчик, чтобы выяснить, где происходит ошибка и какие переменные значения являются причиной.
Shradha Khandagale
отладка невозможна, мы импортировали cbw32.dll из кода VB и с помощью функции из этой библиотеки dll непосредственно.
Функция, которую я использую, приведена ниже:
_ulStat = cbAInScan(BoardNum0, LowChan, HighChan, a, CbRate, Gain, _memHandle0, GlobalVariables.BlockIo)
это моя функция, в которой ниже приведены параметры с их значениями:
private const uint BoardNum0 = 0;
private const uint LowChan = 0;
private const uint HighChan = 0;
uint a = 2000;
частный const uint Gain = 4;
private const uint CbRate = 15000;
uint _memHandle0 = cbWinBufAlloc(NumPoints) : значение которого равно 239992832 после выделения буфера;
public const uint BlockIo = 96;
и это дает ошибку " попытка чтения или записи защищенной памяти. Это часто указывает на то, что другая память повреждена " после выполнения.
функция кода VB, которую я преобразовал в C# , приведена ниже:
Объявить функцию cbAInScan Либ "cbw32.dll" (как byval BoardNum&амп;, бывал LowChan&амп;, бывал HighChan&амп;, бывал CBCount&амп;, CBRate&амп;, бывал усиления и усилитель;, бывал MemHandle&амп;, бывал параметры усилителя;) Как Долго
не могли бы вы подсказать мне, где я ошибаюсь в своей реализации?
Richard MacCutchan
Без некоторой полезной отладочной информации вы не можете догадаться, где находится ошибка. Являются ли все эти значения параметров правильными, которые вы передаете в библиотеку dll?
Shradha Khandagale
это не возможно, чтобы отладить функцию из DLL
Объявить функцию cbAInScan Либ "cbw32.dll" (как byval BoardNum&амп;, бывал LowChan&амп;, бывал HighChan&амп;, бывал CBCount&амп;, CBRate&амп;, бывал усиления и усилитель;, бывал MemHandle&амп;, бывал параметры усилителя;) Как Долго
я только что преобразовал этот VB-код в c# и получил параметр из того же VB-кода. правильно ли это преобразование?
в частности, Можете ли вы сказать о дескрипторе памяти и преобразовании параметров CbRate из VB в c# правильно или нет, я застрял с этой проблемой за последние 4 дня, но у меня все еще нет никакого полезного решения.
Richard MacCutchan
Извините, но я понятия не имею, что эта функция должна делать. Единственный способ решить эту проблему-проверить документацию для этой библиотеки, чтобы убедиться, что вы передаете правильные значения. Как только вы это проверите, вам нужно будет использовать отладчик, чтобы найти, где происходит ошибка.