Convertir de C à C #, ou créer une DLL?

Je suis nouveau dans la programmation C #. J’ai un programme que j’ai modifié en C, je dois maintenant prendre le tableau de chaînes que je tire de mon programme C et le transmettre à un programme C # afin qu’il puisse interroger une firebase database Oracle à l’aide de ces valeurs.

Ce programme est utilisé pour obtenir les numéros de série de tous les périphériques iButton connectés à l’ordinateur.

Voici le code C

// function prototypes void UnLoadTMEX(void); short LoadTMEX(void); // globals static FARPROC Get_Version, TMGetTypeVersion, TMEndSession; static FARPROC TMSetup, TMNext, TMRom, ExtendedStartSession; static FARPROC TMReadDefaultPort; long (__fastcall *TMExtendedStartSession)(short,short,void *); static HINSTANCE hInst; unsigned char state_buf[5125]; //-------------------------------------------------------------------------- // Main of iSerial64 // void main(int argc, char **argv) { char refresh,buf[200]; short flag,i,didsetup=0; short ROM[9]; short PortNum,PortType; long SHandle; char serialtmp[2], serial[10][17]; int j = -1; // load the TMEX driver and get pointers to functions if (!LoadTMEX()) { printf("ERROR, could not load IBFS64.DLL\n"); exit(0); } // load the TMEX driver and get pointers to functions TMReadDefaultPort(&PortNum, &PortType); // get the TMEX driver version printf("Port number: %d Port type: %d\n",PortNum,PortType); Get_Version(buf); printf("Main Driver: %s\n",buf); printf("TYPE%d:",PortType); if ((short)TMGetTypeVersion(PortType,buf)  1) PortNum = atoi(argv[1]); // check for valid range of PortNum if ((PortNum  15)) { printf("ERROR, invalid port requested: %d\n",PortNum); exit(0); } // loop to display the rom numbers until key hit do { // get a session handle to the requested port SHandle = TMExtendedStartSession(PortNum,PortType,NULL); if (SHandle > 0) { // check to see if TMSetup has been done once if (!didsetup) { flag = (short)TMSetup(SHandle); if (flag == 1 || flag == 2) { printf("TMSetup complete %d\n",flag); didsetup = 1; } else { printf("ERROR doing setup %d\n",flag); break; } } // only get the next rom after setup complete else { //j was added to keep track of the serial number ssortingngs j++; memset(serial[j], 0, strlen(serial[j])); flag = (short)TMNext(SHandle,(void far *)&state_buf[0]); if (flag > 0) { ROM[0] = 0; flag = (short)TMRom(SHandle, (void far *)&state_buf[0], (short far *)&ROM[0]); for (i = 7; i >= 0; i--) { //This section was changed from the original //copies raw number into ssortingng sprintf(serialtmp, "%02X", ROM[i]); strcat(serial[j], serialtmp); } printf("%s ", serial[j]); printf("\n"); } else printf("end of search\n"); } // close the opened session TMEndSession(SHandle); } } while (flag > 0); // Unload the TMEX driver UnLoadTMEX(); printf("iSERIAL64 end\n"); } //-------------------------------------------------------------------------- // Load the TMEX driver and get a pointers to the functions // short LoadTMEX(void) { // attempt to get a SHandle to the TMEX driver hInst = LoadLibrary(L"IBFS64.DLL"); // get a pointer to the function needed by loopit64 if (hInst != NULL) { ExtendedStartSession = GetProcAddress(hInst,"TMExtendedStartSession"); TMEndSession = GetProcAddress(hInst,"TMEndSession"); TMSetup = GetProcAddress(hInst,"TMSetup"); TMNext = GetProcAddress(hInst,"TMNext"); TMRom = GetProcAddress(hInst,"TMRom"); Get_Version = GetProcAddress(hInst,"Get_Version"); TMGetTypeVersion = GetProcAddress(hInst,"TMGetTypeVersion"); TMReadDefaultPort = GetProcAddress(hInst, "TMReadDefaultPort"); // check to make sure got ALL of the functions needed if ((ExtendedStartSession == NULL) || (TMEndSession == NULL) || (TMSetup == NULL) || (TMNext == NULL) || (TMRom == NULL) || (Get_Version == NULL) || (TMGetTypeVersion == NULL) || (TMReadDefaultPort == NULL)) { printf("ERROR, could not get a pointer to all" " of the TMEX functions needed\n"); return 0; } // get a function pointer that returns a long TMExtendedStartSession = (long (__fastcall *)(short,short,void *))ExtendedStartSession; return 1; } else return 0; } //-------------------------------------------------------------------------- // UnLoad the TMEX driver // void UnLoadTMEX(void) { // release the TMEX driver FreeLibrary(hInst); } 

Devrais-je tenter de convertir cela ou simplement créer une DLL C et l’importer dans mon programme C #? Comme je l’ai dit, je n’ai pas vraiment travaillé avec C #, je suis un stagiaire et mon patron me donne ce projet pour que je puisse apprendre le C #. Toute aide est grandement appréciée

Si vous voulez utiliser c dll dans c #, lisez cet article. Mais il est préférable de convertir le code en code c # car vous pouvez gérer ce code et le mettre à jour facilement.

Si votre patron vous donne ce projet pour apprendre le C #, je vous conseille de le convertir et de le convertir en C #. Cela facilitera beaucoup l’utilisation future du code.

Je vous recommande de consulter le livre C # in Depth pour une bonne introduction à C #.