Newsgroup: it.comp.programmare.win32
Titolo: [?] Chiarimenti sulla creazione e l'utilizzo di dll in Vc++ e VB

Ciao a tutti.
Mi chiedevo se qualcuno di voi poteva rispondere a qualche mia domanda e che
possa chiarirmi qualche dubbio.
Premessa :
Ho creato una win32 dll con Visual c++ e seguendo la documentazione msdn ne
ho esportato metodi in modo da poterli utilizzare con Visual Basic.
Da VB utilizzo tali metodi attraverso l'istruzione declare funtion..... e il
tutto funziona.
Ma i miei dubbi sono:
1) le dll che vengono aggiunte in VB attraverso i Riferimenti, in modo che
tale dll possa essere usata attraverso l'istrunzione 'New' (o CreateObject),
che tipo di librerie sono invece?
Che differenze hanno con quelle create in Vc++ ?
2)esiste la possibilità di creare in Visual c++ dll che possano essere usate
come il punto 1 (in VB)?
3) è possibile esportare solo funzioni da una libreria dll VC++ che possono
essere utilizzate da Visual Basic? Le classi non possono essere esportate
per questo scopo?
La domanda si lega alle domande precedenti. In pratica io vorrei programmare
classi in VC++ e utilizzare queste e i rispettivi metodi in Visual Basic.
Per esempio creare una dll che contiene la classe Utility in vc++, con un
metodo Add(...) e in vb importare tale classe e scrivere per esempio:
dim miaclasse as MiaLib.Utility
set miaclasse = New (o CreateObject..) Utility
miaclasse.Add(..)
(Il motivo per cui non creo le classi in VB è molto semplice: tutto il
discorso deve essere spostato in ambiente embedded c++ e embedded vb, e
quest'ultimo non supporta l'utilizzo delle classi.)
Grazie per ogni possibile chiarimento e consiglio.
Fabio

 classi in VC++ e utilizzare queste e i rispettivi metodi in Visual Basic.
COM è stato fatto apposta. Ti permette di creare un componente che a
prescindere dal linguaggio usato per scriverlo puoi utlizzarlo attraverso
qualunque altro linguaggio.
Esempio
Oggetti COM creati in VB possono essere usati in VC e viceversa oggetti COM
creati in VC possono essere usati in VB.
In generale se non si conosce bene ATL è meglio evitare di usare COM con Vc
mentre con VB è tutto molto più immediato.

 possono essere esportate per questo scopo?
devi renderle delle classi OLE perchè VB le supporti. Considera l'uso 
di ATL
-- 
 < 
http://www.reactos.com/
 >  Open source clone of Windows NT. Current
     Don't stand, REACT!      version 0.0.20. C, C++ and ASM developers
                              and beta testers are welcome!

 di ATL
Ciao e grazie per le info! 
Seguendo i tuoi consigli ho provato a creare una dll con il wizard ATL
ed effettivamnete sono riuscito ad importarla in un programma VB.
Tuttavia mi si presenta un ulteriore problema:
le classi delle dll che ho creato vengono correttamente istanziate se
utilizzo l'operatore 'New', ma se provo ad utilizzare il
CreateObject('nomeclasse.metodo') in fase di runtime si solleva un
errore che mi indica l'impossibilità di istanziare l'oggetto.
Purtroppo l'operatore New non posso usarlo, infatti utilizzo Embedded
VB (per la programmazione di dispositivi mobile) che non permette
l'uso di tale operatore, ma solamente di CreateObject('...') :(
Qualcuno può darmi suggerimenti?
Forse devo creare la dll con qualche particolare proprietà?
Grazie mille
Cesa


Volevi dire CreateObject("nomelibreria.nomeclasse"), vero?
Se hai provato in questo modo, qual è l'errore esatto?