Вызов DLL из C # не работает в новой платформе .Net (3.5 против 4.6.1) - PullRequest
0 голосов
/ 26 августа 2018

У меня есть следующий код:

[DllImport("ftcjtag.dll", CallingConvention = CallingConvention.Cdecl)]
static extern uint JTAG_OpenHiSpeedDevice(string DeviceName, uint locationID, string channel, ref IntPtr pftHandle);

[DllImport("ftcjtag.dll", CallingConvention = CallingConvention.Cdecl)]
public static extern uint JTAG_InitDevice(IntPtr ftHandle, uint clockDivisor);


IntPtr ftHandle = IntPtr.Zero;
ftStatus = JTAG_OpenHiSpeedDevice(hiSpeedDeviceName, locationId, hiSpeedChannel, ref ftHandle);
if (ftStatus != FTC_SUCCESS)
{
      throw new JTAGApiException("An error occurred while calling JTAG_OpenHiSpeedDevice for device:" + hiSpeedDeviceName + ". API Error:" + GetError(ftStatus));
}


ftStatus = JTAG_InitDevice(ftHandle, 1);

if (ftStatus != FTC_SUCCESS)
{
    throw new Exception("An error occurred during init jtag device " + HiSpeedDevice.DeviceName);
}

Когда я запускаю его с Net 3.5, он работает нормально.

Когда я переключаюсь на 4.6.1, JTAG_InitDevice возвращает код ошибки, говорящий, что предоставленный дескриптор недействителен. JTAG_OpenHiSpeedDevice - то, где я получил ручку. Я не вижу причины, по которой в 3.5 дескриптор действителен, а в 4.6.1 он недействителен.

Thx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...