ho un compito semplice:Come utilizzare un. Assieme Netto in Delphi senza registrarlo in GAC o COM?
è possibile scrivere una DLL Delphi e mettere un. Assieme Net (con una sola interfaccia con 4 metodi e una classe che implementa l'interfaccia) oltre a esso e chiamarlo dalla DLL Delphi ?
Voglio dire, posso importare i tipi .Net direttamente dall'assembly .Net (nome file relativo) se creo un'unità tlb e una delphi per il tlb, senza registrare Assembly/tlb?
migliore, thalm
EDIT (quello che ho trovato):
La maggior parte delle soluzioni devono registrare almeno una dll/tlb per COM. Ma la cosa più promettente che ho trovato era: Unmanaged Exports da Robert Giesecke, è un modello di progetto di Visual Studio, che permette di scrivere statica C# (o qualunque linguaggio .Net) metodi e li chiamate da qualsiasi lingua non gestito, impressionante:
class Test
{
[DllExport("add", CallingConvention = CallingConvention.StdCall)]
public static int Add(int left, int right)
{
return left + right;
}
}
EDIT 2: Funziona davvero! Puoi persino controllare il tipo di marshalling, non credibile !!!
Nice hack che trova +1. Quasi immediatamente ha avuto senso una volta ricordato che l'intestazione .Net è solo un'estensione del formato COFF. Ho avuto un ottimo articolo con i dettagli delle posizioni .Net ma non riesco a trovarlo ora. Qui è forse anche il modo migliore (non più semplice) per farlo: http://www.codeproject.com/KB/cs/unmanagedtomanaged.aspx – user44298
cont. Un'altra utilità utile che ho trovato grazie alla ricerca nella tua soluzione che potrebbe essere utile ai visitatori http://msdn.microsoft.com/en-us/library/ms164699(VS.80).aspx – user44298
@Ivo, questo è solo il modo comune di ospitare CLR e utilizzare l'interoperabilità COM tramite mscoree per accedere ai tuoi tipi. (Non sono sicuro se anche un articolo codeproject sia veramente utile per qualcosa che è già documentato su msdn http://msdn.microsoft.com/en-us/library/dd380850.aspx) Questo è perfettamente adatto per molti casi d'uso, soprattutto se vuoi qualcosa di più dei semplici metodi e usa un linguaggio che abbia una buona gestione della COM come C++ o Delphi. Non ti aiuta quando devi avere una "vera" DLL. ;-) –