Newsgroup: it.comp.lang.visual-basic
Titolo: Creazione Dll VB.NET e uso in VB6

Ciao a tutti.
Il mio problema è questo:
ho creato una DLL in 
VB.NET
 che ho bisogno di usare con VB6 con tutti
gli accorgimenti del caso (Namespace, interface, ...)... Ho seguito le
procedure di "compilazione" della DLL da 
VB.NET
, ho impostato che la
dll si veda anche in COM, ho "compilato" la DLL con il gacutil.exe e
ho creato il file tlb con tblexp.exe, così da renderlo compatibile con
VB6. Fin qui tutto ok.
Creo il mio progetto in vb6 e aggiungo la reference al file tlb. Creo
i vari oggetti, (in fase di scrittura del codice), vedo i metodi del
mio tlb (dll) , ma in fase di compilazione, quando cerco di fare la
New del mio oggetto oppure il createObject mi esce l'errore
"Impossibile creare l'oggetto ActiveX"...
Penso a questo punto di non aver messo qualche metodo o qualche
accorgimento particolare nella mia DLL, ma spero di avere un aiuto da
voi....
Grazie mille in anticipo

 voi....
La tua dll ha i vari attributi per le classi e per l'assembly?
In teoria (non ho mai provato con VB2005) lo fa VisualStudio in automatico, 
ma tu puoi verificare la Dll con Reflector.
Poi le classi devono comportarsi come lo farebbe una classe ActiveX, ad es. 
i costruttori non devono avere parametri.
Anni fa feci una ricerca sull'argomento e riassunsi il tutto qui
http://groups.google.it/group/it.comp.lang.visual-basic/browse_frm/thread/3143292cee52f7e/aab2397ab308ce98
Questo č quello che deve succedere "under the hood", che poi venga fatto in 
automatico da VisualStudio non ne ho idea :)
Ciao 

 un po'...
allora ti do ragione...
Solo che ho trovato alcuni tutorial che mi dicevano di fare così...
Accetto consigli su come rendere la cosa più semplice.
Non è necessario sia fatta in questo modo...
Se c'è un metodo per farlo più semplicemente ben accetto....

 Se c'è un metodo per farlo più semplicemente ben accetto....
Un metodo per fare cosa? :)
Qual è il tuo problema?
Eventualmente ti consiglio di leggere il mio post di cui ti ho indicato il 
link prima perchè è abbastanza dettagliato.
Ciao 

 Un metodo per fare cosa? :)
Si, un metodo per fare quello che ho detto qui sopra....

 un po' alla volta senza avere particolari problemi.
Secondo me sbagli approccio.
Il risultato sarà un gran pasticcio e di solito se proprio è necessario si 
fa l'inverso: si sviluppa l'interfaccia in 
vb.net
 e si usano le dll scritte 
in vb6, poi pian piano si traducono le dll.
Ciao

 Ciao
Il mio problema è che in vb6 non ho le dll, ma solo classi...
Quindi è per quello che volevo man mano creare delle dll in 
vb.net
,
sostituendo le classi e poi una volta finito tradurre pure
l'interfaccia...

Ho seguito le istruzioni del post
http://groups.google.it/group/it.comp.lang.visual-basic/browse_frm/th
..
che mi aveva segnalato Fabio.
e funziona il tutto.
Bastava solo leggere con attenzione.
Grazie mille a tutti comunque!
Ciao


Qual era il problema?
Comunque, per me ti converrebbe riscrivere tutto d'un pezzo, visto che non 
mi pare che il tuo sia un progetto enorme, questo perchè così facendo oltre 
a risparmiare tempo potrai avere un progetto che si basa sulle nuove 
potenzialità di 
vb.net
 e non avere un pastrocchio.
"Pastrocchio" non perchè il tuo progetto sia fatto male, ma perchè vb6 e 
vb.net
 si basano su strutture completamente diverse e la traduzione starebbe 
insieme con lo scotch.
Ciao 

 Ciao
Mi spiace deluderti, ma il progetto è ben più grande di quello che
possa immaginare...
Non è un form ed una dll, te lo garantisco...
Cmq, grazie lo stesso dei consigli, sono sempre ben accetti, e non
fanno altro che far ragionare sulle problematiche...
Buon lavoro a tutti

 fanno altro che far ragionare sulle problematiche...
Sì, ma io voglio sapere cosa ti mancava per far funzionare la tua dll .Net 
:)
Comunque ti preannuncio che le chiamate da Vb6 a dll scritte in .Net sono 
lentissime, e quando dico lentissime intendo LENTISSIME, quindi evita di 
metterle in loop lunghi.
Fortunatamente una volta chiamate l'esecuzione dovrebbe essere a velocità 
standard.
Ciao 

 Ciao
Mi mancava il cotruttore...
Nella mia classe "classeTest" (originale, vero... :-) ? ) non avevo
messo il cotruttore...
Ovvero il Public classeTest()
riassumo brevemente così almeno se dovesse servire a qlc d'altro:
Creo il mio codice in 
VB.NET
 con VB 2005 Express Ed
namespace test
    public class classeTest
        public classeTest()
        public function metodoTest() as string
             return "CIAO"
        end function
    end class
end namespace
Salvo tenendo presente che ho bisogno di due cose fondamentali:
- La firma
- Spuntare l'opzione "visibile a COM..."
Salvo e genero la mia dll Test.DLL
Prendo il programmino
passo in cmd
e lancio il comando
regasm ....\Test.DLL /tlb /codebase
mi genera il file Test.tlb
Creo il mio programmino in vb6 con
aggiungo la relazione di test.tlb
"dim prova as Test.ClasseTest
set prova = new Test.ClasseTest
msgbox prova.metodoTest()"
avvio....
Ecco il tutto...
Ciao a tutti