Newsgroup: it.comp.lang.visual-basic
Titolo: AIUTO! Creare DLL o ".res" ESTERNI all'eseguibile

Sto facendo un applicazione che ha bisogno di alcune "risorse" esterne
che cambiano periodicamente e che quindi non possono essere compilate
all'interno del file eseguibile .exe
Qual'e' il miglior metodo per fare cio'?
Mi spiego un po' meglio.. i menu di questo programma cambiano spesso e
quindi devono risiedere in un file esterno, per esempio una dll in
modo che chiamando una funzione all'interno di essa crei il menu in
tempo reale con i dati contenuti nella risorsa all'interno della dll
separata.
Il problema e' che non so come fare per creare una dll di questo tipo,
io ne ho create una con all'interno un file .res con le string
resource dei menu poi nella classe della DLL ho dichiarato una
funzione pubblica, questa:
Public Function GetResource(ByVal ID As Integer) As String
    GetResource = LoadResString(1)
End Function
Nel programma principale (.exe) che deve accedere alla DLL ho
utilizzato declare per dichiararla:
Private Declare Function GetMenu Lib "\dirprogramma\menu.dll" Alias
"GetResourceW" (ByVal id As Integer) As String
e immesso questa riga all'interno del programma che richiama la
funzione GetMenu della mia dll, o almeno dovrebbe:
mnuFile.caption= GetMenu(1)
Quando il programma arriva in esecuzione a questa riga pero' ricevo
questo errore:
Errore di run-time '453':
Impossibile trovare il punto di ingresso della DLL GetResourceW in
\dirprogramma\menu.dll
Dove sbaglio? :(
Puo' essere perche' win95 non riconosce le dll in unicode? (W) Se e'
cosi' come faccio a crearle in ANSI dal Visual Basic 5 o anche senza
Visual Basic?
Accetto anche suggerimenti diversi senza l'utilizzo di dll se ce ne
sono, oppure se esiste il modo di utilizzare resource esterni
all'applicazione e decidere quale utilizzare in tempo di esecuzione.
Grazie in anticipo!!
Emanuele

...CUT

metodo GetResource.
Se volessi fare una DLL standard come quelle che contengono le api di
windows come dovrei fare? Cosa dovresi scrivere dentro al file Visual
C++?
Anche guardando il manuale del visual basic non sono riuscito a capire
come creare un oggetto da quella dll, infatti CreateObject richiede
come argomento nomeapp.tipooggetto.
Mi potete fare qualche esempio?
Ari-grazie!

Ari-grazie!
Ciao sono Alfonso,
    mi interesserebbe moltissimo approfondire meglio l'argomento; sto
scrivendo delle applicazioni in VB5 e, nel fare questo, creo delle DLL.
Fin qui tutto bene il problema sorge quando, per esigenze particolari, sono
costretto a usare queste DLL in ACCESS......
..... e li casca l'asino !!!
Sorge infatti il problema di cui parli tu, facendo una chiamata da ACCESS la
si fa in modo classico e di conseguenza non si possono creare istanze della
classe.
Cosa mi consigli ????
Grazie.

Cosa mi consigli ????
Hmm.. mi spiace io non saprei perche' ho circa il tuo stesso problema
anche se non con access che non conosco quasi per niente :(
Pero' spero che qualcuno sappia aiutarci, ma non c'e' un modo di
utilizzare le dll tipo come le api di windows? 
Provando e riprovando e leggendo pagine di manuale sono riuscito ad
utilizzare il metodo del createobject pero' ho scoperto che non va
bene nella mia situazione perche' ho bisogno di aggiornare il file dll
mentre e' in esecuzione il programma che lo ha utilizzato. Pero' ho
visto che facendo cosi' non me lo fa sostituire anche se l'esecuzione
della classe all'interno del dll e' gia' stata completata
(Class_Terminate).
Mentre e' in esecuzione il programma infatti se faccio dal prompt di
dos o anche in qualche altro modo:
copy menu2.dll menu.dll
la copia non avviene e ricevo questo errore:
Violazione di condivisione - menu.dll
        0 file copiato/i

...


Emanuele
-------------------
Posso dirti la causa dell'errore di run-time. Esso viene generato perché VB
non trova una funzione con tale nome o perché il percorso della DLL,
specificato nel parametro "Lib" della dichiarazione, è errato.
E' poco, lo so, ma non posso darti altri aiuti, poiché io di solito me la
cavo con i file RES.
Ciao
Marco Minerva
http://www.geocities.com/SiliconValley/Foothills/7260
http://www.armaditaggia.com/marco