Discussione:
Creare DLL con Visual Basic 6
(troppo vecchio per rispondere)
Ben
2004-06-07 19:55:46 UTC
Permalink
Premetto che non ho molta esperienza nel campo e avrei quindi bisogno di una
risposta chiara e dettagliata.
Ho una serie di funzioni in VB6 già funzionanti. Vorrei usarle per creare
una DLL. E' possibile? ho cercato un po' nella rete, e sono venuti fuori
solo degli esempi in VC++. Devo necessariamente convertire tutte le funzioni
in VC, per poi creare la DLL e per poi assicurarmi che la Dll sia leggibile
da VB o posso far tutto in VB6?

Faccio un esempio:

Public Function somma(num1 As Integer, num2 As Integer) As Integer
somma = (num1 + num2)
End Function


se la metto in un nuovo progetto activeX dll, e poi genero la dll, e poi
cerco di leggerla con VB mi da errore: can't find DLL entry point somma in
project.dll

Come devo risolvere? come faccio a definire un entry point?

Grazie x l'aiuto
Ciao
Zanna
2004-06-07 20:42:26 UTC
Permalink
Post by Ben
Premetto che non ho molta esperienza nel campo e avrei quindi bisogno di una
risposta chiara e dettagliata.
Ho una serie di funzioni in VB6 già funzionanti. Vorrei usarle per creare
una DLL. E' possibile? ho cercato un po' nella rete, e sono venuti fuori
solo degli esempi in VC++. Devo necessariamente convertire tutte le funzioni
in VC, per poi creare la DLL e per poi assicurarmi che la Dll sia leggibile
da VB o posso far tutto in VB6?
Le Declare sono relative a funzioni contenute in DLL standard, cioè quelle
scritte in C/C++ (o altri compilatori simili come Delphi), le quali hanno
bisogno di un EntryPoint.

VB6 permette la creazione di solo DLL ActiveX, quindi niente EntryPoint.

Queste DLL non possono pubblicare funzioni ma solo classi.

Per simulare ciò che vuoi fare tu devi aggiungere una o più classi di tipo
GlobalMultiUse e copiarci dentro le tue funzioni.

Consiglio: crea tante classi quante sono le tipologie di funzioni in modo da
raccoglierle in modo logico (es, VB pubblica le funzioni stringa come Mid,
Left ecc nella classe GlobalMultiuse Strings, quelle matematiche come Abs,
Cos ecc nella classe Math e così via).

In questo modo quando tu aggiungi la tua dll tra i riferimenti del progetto
potrai chiamare le tue funzioni.

Questo sistema non è il massimo delle performaces, perchè VB converte

Debug.Print MiaFunzione()

Oppure più precisamente Debug.Print MiaClasse.MiaFunzione()

in

Dim c As MiaClasse
Set c = New MiaClasse
Debug.Print c.MiaFunzione()

ma la differenza è pressochè trascurabile, a patto di mettere poco codice
nell'evento _Initialize.

Ciao


--
NeoDataType : http://www.neodatatype.net
Sito Comune : http://www.it-lang-vb.net
Ben
2004-06-09 22:54:31 UTC
Permalink
Ti ringrazio davvero di cuore per il tuo preziosissimo aiuto! mi hai davvero
aiutato a risolvere un bel problema!
Grazie e ancora Grazie!
Ciao

Loading...