{"id":536,"date":"2024-10-07T01:24:15","date_gmt":"2024-10-06T23:24:15","guid":{"rendered":"https:\/\/www.luigitarpani.it\/?p=536"},"modified":"2024-11-22T06:27:52","modified_gmt":"2024-11-22T05:27:52","slug":"flutter-simple-dll-ffi-utilizzare-dll-c-in-unapp-flutter","status":"publish","type":"post","link":"https:\/\/www.luigitarpani.it\/index.php\/2024\/10\/07\/flutter-simple-dll-ffi-utilizzare-dll-c-in-unapp-flutter\/","title":{"rendered":"Flutter Simple DLL FFI: Utilizzare DLL C++ in un&#8217;app Flutter"},"content":{"rendered":"\n<p>Eccomi di nuovo sull&#8217;argomento Flutter con un esempio pratico di utilizzo di DLL esterne, in questo caso scritte in C++. <\/p>\n\n\n\n<p>Seguendo il walkthrough ufficiale di Microsoft per creare una DLL in C++ , ho realizzato la libreria indicata che calcola numeri di Fibonacci. <br>Nel sito Microsoft viene proposto l&#8217;utilizzo della libreria appena creata come libreria esterna per un altra applicazione sempre realizzata in C++, il mio obbiettivo e&#8217; invece integrare la DLL in un&#8217;app Flutter per dimostrare come sia possibile combinare la potenza del C++ con la flessibilit\u00e0 di Flutter e realizzare cosi FrontEnd di nostro gradimento.<br>L&#8217;esigenza di questo progetto viene da un mio progetto nel quale ho dovuto comandare un Laser Tracker per rilevare misure in linea di produzione. Il Laser Tracker, come molti hardware di livello, viene fornito con delle DLL facenti parti del suo SDK scritto appunto il C++.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Contenuti <\/h2>\n\n\n\n<p><\/p>\n\n\n\n<ul>\n<li>U<strong>so delle DLL scritte in C++ con Flutter:<\/strong> consente di sfruttare codice nativo ad alte prestazioni, mantenendo l&#8217;interfaccia moderna e user-friendly che Flutter offre. Questo approccio permette una maggiore efficienza e compatibilit\u00e0, soprattutto in progetti complessi che richiedono integrazioni con sistemi, anche hardware, di diversa natura. Flutter, con il pacchetto <code>dart:ffi<\/code>, rende semplice questa integrazione, offrendo nuove opportunit\u00e0 di sviluppo.<\/li>\n\n\n\n<li><strong>Limiti:<\/strong> <code>dart:ffi<\/code> \u00e8 strettamente legato alle librerie native della piattaforma (ad esempio, Windows in questo caso), il che pu\u00f2 rendere pi\u00f9 difficile la portabilit\u00e0 su altre piattaforme come Android o iOS. D&#8217;altronde anche le DLL stesse sono legate alla piattaforma in cui girano. <\/li>\n\n\n\n<li><strong>Codice Esempio:<\/strong> Il codice di questo esempio lo trovate qui <a href=\"https:\/\/github.com\/GiGi-Italy\/flutter_simple_dll_ffi\">https:\/\/github.com\/GiGi-Italy\/flutter_simple_dll_ffi<\/a><\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Crediti<\/h2>\n\n\n\n<p>Un ringraziamento speciale va agli sviluppatori Microsoft che quando vogliono sanno fare del sito  <a href=\"http:\/\/learn.microsoft.com\">learn.microsoft.com<\/a> una fonte davvero ottima a cui accingere per aumentare le nostre conoscenze. In questo caso l&#8217;articolo (<a href=\"https:\/\/learn.microsoft.com\/en-us\/cpp\/build\/walkthrough-creating-and-using-a-dynamic-link-library-cpp?view=msvc-170\">qui<\/a>), e&#8217; davvero bene fatto! La cosa pi\u00f9 difficile e&#8217; solamente seguire i men\u00f9 di visual studio se non lo avete installato in inglese \ud83d\ude42<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Contesto<\/h2>\n\n\n\n<p>L&#8217;esigenza di questo progetto \u00e8 nata dalla necessita di far interagire le nostre applicazioni scritte in Flutter con hardware e software di vario genere del quale magari il produttore rilascia SDK scritti proprio in C++.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Compatibilit\u00e0<\/h2>\n\n\n\n<p>Attualmente, Simple DLL FFI \u00e8 stato testato solo su sistema operativo Windows, visto appunto che le DLL sono una peculiarit\u00e0 di questo sistema.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Conclusione<\/h2>\n\n\n\n<p>&#8220;Simple DLL FFI&#8221; offre una soluzione pratica se hai accesso diretto alla libreria nativa (DLL), utilizzare <code>dart:ffi<\/code> \u00e8 un&#8217;ottima opzione per evitare di dover scrivere codice nativo C++ o C#, <code>dart:ffi<\/code> pu\u00f2 essere pi\u00f9 semplice e diretto rispetto ai canali di piattaforma.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Eccomi di nuovo sull&#8217;argomento Flutter con un esempio pratico di utilizzo di DLL esterne, in questo caso scritte in C++. Seguendo il walkthrough ufficiale di Microsoft per creare una DLL in C++ , ho realizzato la libreria indicata che calcola numeri di Fibonacci. Nel sito Microsoft viene proposto l&#8217;utilizzo della libreria appena creata come libreria [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"_links":{"self":[{"href":"https:\/\/www.luigitarpani.it\/index.php\/wp-json\/wp\/v2\/posts\/536"}],"collection":[{"href":"https:\/\/www.luigitarpani.it\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.luigitarpani.it\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.luigitarpani.it\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.luigitarpani.it\/index.php\/wp-json\/wp\/v2\/comments?post=536"}],"version-history":[{"count":3,"href":"https:\/\/www.luigitarpani.it\/index.php\/wp-json\/wp\/v2\/posts\/536\/revisions"}],"predecessor-version":[{"id":542,"href":"https:\/\/www.luigitarpani.it\/index.php\/wp-json\/wp\/v2\/posts\/536\/revisions\/542"}],"wp:attachment":[{"href":"https:\/\/www.luigitarpani.it\/index.php\/wp-json\/wp\/v2\/media?parent=536"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.luigitarpani.it\/index.php\/wp-json\/wp\/v2\/categories?post=536"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.luigitarpani.it\/index.php\/wp-json\/wp\/v2\/tags?post=536"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}