View Full Version : Problema: usare codice c++ in c#
Buongiorno, ho un grande problema: ho bisogno di utilizzare una libreria, gratuita, che ho trovato in giro; di questa risorsa posseggo il codice sorgente, che è scritto in C++.
Il progetto invece è in Visual C#. Potete aiutarmi?
Considerate che sono pressochè un newby, e non ho grandissime conoscenze.
Vi ringrazio anticipatamente
RaouL_BennetH
02-05-2007, 13:11
Se è una dll, che tu sappia è una libreria basata su COM oppure no?
Se è una dll, che tu sappia è una libreria basata su COM oppure no?
come posso capirlo?
RaouL_BennetH
02-05-2007, 13:21
Beh, se è libera, e tu hai sorgenti, dovrebbe anche esserne documentato l'uso (credo). Altrimenti prova a postare il link dove l'hai prelevata (semprechè sia lecito :D ) e vedrò se potrò esserti di aiuto.
Il link è lecitissimo.
http://www.surina.net/soundtouch/index.html
tomminno
02-05-2007, 21:59
Buongiorno, ho un grande problema: ho bisogno di utilizzare una libreria, gratuita, che ho trovato in giro; di questa risorsa posseggo il codice sorgente, che è scritto in C++.
Il progetto invece è in Visual C#. Potete aiutarmi?
Considerate che sono pressochè un newby, e non ho grandissime conoscenze.
Vi ringrazio anticipatamente
Devi compilarla come DLL e tramite il meccanismo del P/Invoke importare i metodi esportati dalla libreria
Proverò a cercare qualcosa di più su questo metodo; c'è differenza tra P/Invoke e il comando DLLImport? I metodi esportati dalla libreria sono quelli che all'inizio hanno la dicitura "extern "C" "?
Altrimenti, dato che ho il codice in c++ della libreria, non potrei provare una sorta di "traduzione"?
tomminno
03-05-2007, 14:00
Altrimenti, dato che ho il codice in c++ della libreria, non potrei provare una sorta di "traduzione"?
Difficile visto che utilizza parti in assembly. Oltretutto poi dovresti testare se effettivamente il tuo porting si comporta allo stesso modo dell'originale. Sicuramente più facile affidarsi alle procedure messe a disposizione dal C# per l'invocazione di metodi unmanaged.
tomminno
03-05-2007, 14:03
Proverò a cercare qualcosa di più su questo metodo; c'è differenza tra P/Invoke e il comando DLLImport? I metodi esportati dalla libreria sono quelli che all'inizio hanno la dicitura "extern "C" "?
Il Process Invoke si realizza includendo il namespace System.Runtime.InteropServices e usando DLLImport.
Generalmente si, extern "C" indica al compilatore C++ di non decorare i nomi.
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.