J'ai besoin d'aide pour le marshaling personnalisé ... j'ai une DLL native ... les paramètres de certaines fonctions DLL sont définis avec char non signé *besoin d'aide marshaling personnalisé ..?
par exemple;
typedef short apiStatus;
apiStatus __declspec(dllexport) __stdcall DrfGetFirmwareVersion (HANDLE hCom, unsigned char *major,unsigned char *minor, unsigned char ReaderAddr = 0xff);
la documentation que j'ai décrivant les arguments de la fonction comme suit;
Paramètre d'entrée:
- Hcom-série Port poignée
- version majeure-principale Nombre de programme du firmware
- -subversion mineur Nombre de programme de firmware
- adresse lecteur ReaderAddr-, pour application fixe RS485 pour lecteur fixe, valeur par défaut "0XFF" (ne s'applique pas aux ordinateurs de poche et aux modules)
comment puis-je déclarer cette fonction en C# .. ??
Toute aide à tout serait vraiment apprécié
merci pour les commentaires .. j'ai mis la plate-forme cible à x86 comme vous l'avez dit..un autre problème est la documentation explique un peu les choses pour les fonctions..parfois je ne pouvais pas déterminer ce que je devrais faire ... le SDK de l'appareil contient un fichier lib .. J'ai ouvert la lib avec un editör et j'ai rencontré des noms décorés. Je n'ai pas décoré ces noms décorés avec undname.exe..les résultats comme suit; undname? DrfGetFirmwareVersion @@ YGFPAXPAE1E @ Z ---- >>>> short __stdcall DrfGetFirmwareVersion (void *, char non signé *, char non signé *, char signé) –
PS "*" n'est pas le premier paramètre de la fonction. .il pourrait être comme suit; void * –
Vous devez utiliser la propriété DllImport.ExactSpelling dans votre déclaration. –