Мне нужна помощь о пользовательском маршалинге .. У меня есть родная DLL .. параметры некоторых функций DLL определены с unsigned char *нужна помощь на заказ маршалинг ..?
например;
typedef short apiStatus;
apiStatus __declspec(dllexport) __stdcall DrfGetFirmwareVersion (HANDLE hCom, unsigned char *major,unsigned char *minor, unsigned char ReaderAddr = 0xff);
документация, в которой я описываю аргументы функции следующим образом;
Входной параметр:
- hCom-последовательный порт обрабатывать
- мейджор-основной версии No. программы прошивки
- минорной подрывной номер программы прошивки
- ReaderAddr- адрес читателя, для фиксированное считывающее устройство RS485, значение по умолчанию «0XFF» (не применяется для карманных и модулей)
как я могу объявить эту функцию в C# .. ??
Любая помощь на все действительно было бы оценен
спасибо за отзыв..i установили платформу на x86, как вы сказали ... Другая проблема заключается в том, что документация объясняет некоторые вещи для функций. Иногда я не мог определить, что я должен делать. SDK устройства содержит файл lib..i открыл lib с помощью editör, и я столкнулся с украшенными именами. Я не украсил эти декорированные имена с помощью undname.exe ... результатов следующим образом; undname? DrfGetFirmwareVersion @@ YGFPAXPAE1E @ Z ---- >>>> short __stdcall DrfGetFirmwareVersion (void *, unsigned char *, unsigned char *, unsigned char) –
PS «*» не отображается первый параметр функции. .it может быть следующим: void * –
Вам нужно будет использовать свойство DllImport.ExactSpelling в вашей декларации. –