Usare dll compilata in c#

di il
9 risposte

Usare dll compilata in c#

Ciao a tutti, ho bisogno di capire se è possibile usare una dll compilata in c# in delphi 10.1

Ho questa dll che serve a “pilotare” un semaforo, una periferica usb HID che ha tre luci tipo appunto un semaforo.

Aprendo la dll con dotpek vedo alcune funzioni, tipo:

    public static int NE_CloseDevice() => NeUsbController.NeUsbController.CloseDevice(ref NeUsbController.NeUsbController.m_deviceHandle);

    public static int NE_CloseDevices() => NeUsbController.NeUsbController.CloseDevices(ref NeUsbController.NeUsbController.m_lstDeviceHandle);

    public static int NE_SetLight(LEDColors color, LEDPatterns ledPattern) => NeUsbController.NeUsbController.NE_SetLightBuz(new LEDColors?(color), new LEDPatterns?(ledPattern), new BuzzerPatterns?(), new int?(), new int?());

    public static int NE_SetBuz(BuzzerPatterns buzPattern, int volume, int count)	

vorrei capire se e come poterle usare in delphi.

ho importato le funzioni cosi

  function NE_CloseDevice: Integer; stdcall; external 'NeUsbController.dll';
 function NE_OpenDevice(out deviceHandle: Pointer): Integer; stdcall; external 'NeUsbController.dll';

ho una form con un bottone e richiamo la NE_OpenDevice, per compilare compila, ma quando avvio l eseguibile creato mi da errore :impossibile avviare correttamente l applicazione (0xc000007b), fare clic  su ok per chiudere.

di fatto, si puo' usare una dll di c#?

oppure qualcuno ha qualche ssuggerimento per interfacciarsi con questa peroferica?

https://www.patlite.com/product/detail0000000762.html

grazie mille

9 Risposte

  • Re: Usare dll compilata in c#

    No!

    O almeno NON in modo semplice.
    In modo MOOOLTO complicato, si potrebbe anche fare, ma lo sforzo necessario e' abbondantemente al di la della sua utilita'.

  • Re: Usare dll compilata in c#

    Capisco, ti ringrazio, e  non è che magari sai darmi qualche dritta su strade alternative?  qualche componente o altro per comandare dispositvi HID ?

    grazie

  • Re: Usare dll compilata in c#

    24/03/2023 - ziobacco ha scritto:


    Ciao a tutti, ho bisogno di capire se è possibile usare una dll compilata in c# in delphi 10.1

    Per utilizzare un assembly .NET da Delphi ci sono diverse soluzioni, che dipendono anche da come la libreria .NET è stata creata.

    Supponendo che si tratti di una libreria .NET che non offre particolari soluzioni di interoperabilità (es. COM), puoi provare ad adottare la soluzione descritta in questo articolo, anche se onestamente io non l'ho mai collaudata di persona. Altre info si trovano qui.

    Se invece la libreria esporta una interfaccia COM (consulta la documentazione relativa per accertartene), allora puoi importarla come “Type Library” come qualsiasi altro componente COM/ActiveX disponibile.

    La terza strada potrebbe essere quella di recuperare una versione precedente di Delphi (es. il setup di Delphi Prism), ovvero una versione di Delphi che risalga al momento precedente al “drop” del supporto per .NET Framework.

    Una ulteriore strada può essere quella di adottare una soluzione professionale ed efficace di terze parti, che estende le possibilità al di là della semplice inclusione di una DLL .NET mescolando in modo egregio le due tecnologie (assieme a potenziali altre), come RemObject Hydra.

    Infine, una ultima via potrebbe essere quella di ragionare a “microservizi” tenendo comunque le due realtà (Delphi e .NET) separate tra di loro, mettendole in comunicazione con un servizio di messaggistica (es. RabbitMQ), e quindi costruendo un sistema che si basa sullo scambio di messaggi e sull'ingaggio di applicativi realizzati con tecnologie diverse, integrandoli a livello di sistema e non a livello di eseguibile (quindi cercando di *non* costruire un monolito).

    Ciao! :)

  • Re: Usare dll compilata in c#

    @Alka, se ci pensi un po', il problema NON E' trovare un modo per farlo.

    Di modi come ci sono n-mila: tutti quelli che hai elencato tu piu' n-altre mila varianti, tra qui quelli che potresti costruirti in case se la dll da utilizzare non contiene troppe API e hai abbastanza esperienza e tempo per farlo.

    Il problema e' che l'autore del post molto probabilmente vuole fare qualcosa che non ha senso fare in quel modo.

    Per esempio; e' proprio necessario usare Delphi?

    Oppure la scelta e' basata solo sul fatto che conosce solo Delphi?

    Io, tu, e qualunque “professionista”, non va a stravolgere la piattaforma di utilizzo perche' gli piace un linguaggio di programmazione, MA usa la piattaforma NATIVA o piu' adatta per quel lavoro.

    Il  “No” iniziale era una SEMPLIFICAZIONE per forzare l'autore a ragionare MEGLIO su quello che vorrebbe fare.

  • Re: Usare dll compilata in c#

    27/03/2023 - migliorabile ha scritto:


    @Alka, se ci pensi un po', il problema NON E' trovare un modo per farlo. […]

    Io rispondo al problema posto dall'utente, ed essendoci diverse possibilità in merito, e non essendo la prima volta che vedo questa richiesta (sia da utenti su forum, ma anche da clienti), non vedo perché devo evitare di rispondere nel merito, soprattutto se la mia risposta è indirizzata direttamente a chi ha fatto la richiesta, quotando precisamente il suo messaggio, e replicando in modo diretto alla sua richiesta esplicita.

    Do per scontato che abbia delle buone motivazioni per chiedere quanto chiede, e se la strada appare troppo complicata, al netto del senso che può avere in linea generale, tante sono le variabili in gioco e diverse le competenze, pertanto io mi fido e semplicemente rispondo al quesito che viene fatto.

    Se tu poi ritieni di fare tutte le considerazioni che hai aggiunto, per i motivi che ritieni opportuni, ben vengano: come vedi, non le ho né quotate né contestate (anche perché non ho motivi per farlo), per cui non sto neanche lì a lesinare sul più o sul meno (il tempo è quello che è, non vale la pena spenderlo per precisazioni superflue).

    Nel caso in esame, alla fine del thread, chi l'ha aperto ha tutti i riferimenti per poter decidere liberamente come procedere sapendo cosa comporta una strada piuttosto che un'altra; se invece ha ancora dei dubbi, è sufficiente che chieda nuovamente.

    Quello che registro in questo forum, almeno quando intervengo io, è una continua polemica sulle risposte che vengono date: quando è un neofita, perché non si sente trattato come si deve… quando è un novizio di un linguaggio, perché gliene viene suggerito un altro… quando non si suggerisce un'altra strada, l'autore tace ma allora interviene qualcun altro a dirti che da professionista avresti dovuto suggerirla.

    La partecipazione a questo forum non è un fornire aiuto tecnico alla risoluzione di problemi, ma un continuo esercizio di stile in materia di psicanalisi della testa delle persone, che quando non si applica a chi chiede aiuto, allora si applica a chi risponde, una cosa che porta via tempo utile e aumenta lo stress in modo tale che fa venir voglia di astenersi.

  • Re: Usare dll compilata in c#

    Io in primis ringrazio entrambi, se ho fatto tae richiesta è perchè devo aggiungere una funzionalità ad un software già esistente, questa funzionalità è appunto accendere un semaforo in base a degli allarmi che gia il software da in visualizzazione su uno schermo.

    Siccome tale semaforo ci è stato fornito dall utente ed è quello che vogliono, avevo semplicemente visto sul sito del prpduttore che mettevano a disposizione questa dll sviluppata appunto in c#.

    Dato che se la cosa avesse funzionato era un lavoro direi semplice e veloce, e non riuscendo a capire in effetti se questa dll si poteva usare o meno in delphi, visto che googlando e “chiedendo” aiuto a chatgpt :)  sembrava che si potsse fare ma io non ci riuscivo ho appunto chiesto sul forum..

    comunque alla fine ho “risolto” trovando una strada  piu lunga e scavalcando appunto l uso di questa dll.

    Ringrazio entrambi per l aiuto, sempre entrambi molto pronti e responsive.

  • Re: Usare dll compilata in c#

    27/03/2023 - ziobacco ha scritto:


    comunque alla fine ho “risolto” trovando una strada  piu lunga e scavalcando appunto l uso di questa dll.

    Giusto per curiosità, come hai risolto? :)

    27/03/2023 - ziobacco ha scritto:


    Io in primis ringrazio entrambi, se ho fatto tae richiesta è perchè devo aggiungere una funzionalità ad un software già esistente […]

    Anche se non era garantito al 100%, l'avevo dato infatti per scontato.
    Poi poteva anche essere un “bricco” dovuto al voler usare forzatamente un linguaggio, come diceva migliorabile.

    Il punto - appunto - è: io ho risposto alla domanda, da migliorabile hai ottenuto invece un suggerimento alternativo, su cui - partendo dalle stesse premesse - io concordo anche con quella risposta che ti è stata data.

    Alla fine, scegli tu.

    Ciao! :)

  • Re: Usare dll compilata in c#

    Ciao Alka

    Alla fine ho trovato un' altra dll in rete per interfacciarsi coi dispositivi HID,  tutto qui, nello specifico questa :

    https://libstock.mikroe.com/projects/view/528/usb-hid-dll-for-delphi-and-perhaps-other-languages 

    grazie  ancora.

  • Re: Usare dll compilata in c#

    29/03/2023 - ziobacco ha scritto:


    Alla fine ho trovato un' altra dll in rete per interfacciarsi coi dispositivi HID,  tutto qui, nello specifico questa […]

    Interessante! :)

Devi accedere o registrarti per scrivere nel forum
9 risposte