Newsgroup: it.comp.lang.visual-basic
Titolo: [Req] Inpossibile trovare [nomefile].dll

ho il source in vc++ di una dll quindi conosco le funzioni ecc...
metto la dll nella cartella del prg ( compilato o progetto )
scrivo una declare semplice tipo
Public Declare Function [nomefunzione] Lib "nomefile.dll" (.... ) As ....
e quando tento di chiamare [nomefunzione] mi dice :
impossibile trovare nomefile.dll
premessa :
- l'msdn dice che se non si specifica il percorso esso cerca nelle cartelle
del programma , in app.path ecc..
- il file dll e' nella cartella del vbp e dell'exe , e anche in quella
system :(
- e' la prima volta che tento di usare una mia dll
domande :
 - il mio VB6 sta perdendo diottrie ?
 - come posso fare a fargli vedere sta dll ?
 - non e' che e' una dll che non si puo' usare in visual basic ?
( il source e' in vc++ e l'exe di esempio che la utilizza e' anch'esso in
vc++ )  ... (non conosco il vc++)
- la dll si e' animata e gioca a nascondino col mio exe ?

 metto la dll nella cartella del prg ( compilato o progetto )
Credo che la tua dll vada registrata...
Apri una finestra dos e digita: regsvr32 nomedll
(non sono sicuro che dipenda da questo, è solo una prova)

 (non sono sicuro che dipenda da questo, è solo una prova)
:°(
non e' !
vabbe' stasera mi preparo del the caldo e ci riprovo , al massimo butto il
the sul pc e poi pentito lecco il monitor ... ma queste sono altre storie e
altre perversioni ^_-

 non e' !
E' possibile che vi sia la stessa libreria registrata in altro percorso.
Se non usata da altro prova a deregistrarla a oltranza.
In Public Declare Function [nomefunzione] Lib "nomefile.dll" (.... ) As ....
prova a mettere il tuo percorso completo, non solo il nome.

 impossibile trovare nomefile.dll
Mi sembra si stia facendo un po' di confusione.
Se scrivi la dll con VC(.net? :P ) immagino si tratti di dll standard,
quindi non serve (de)registrare niente poichè non contiene oggetti COM ma
solo funzioni.
Sicuro che venga trovata quel file?
Sicuro (ma non dovrebbe c'entrare) che la dll sia compialta come
indipendente e non con dipendenze di runtime vari? (non conosco VC, con il
borland c'è questa possibilità).
Una volta qualcuno nel NG mi ha consigliato di provare con la LoadLibrary(),
se riesce questa sai che il file viene caricato.
Ciao
--
' // Initialize the expression evaluator
Engines.Evaluator = CreateObject("
http://www.neodatatype.net
")
' // you can find resources for and from the NG here!
Me.SitoComune = "
http://www.it-lang-vb.net
"

 - e' la prima volta che tento di usare una mia dll
non l'hai messa nella dir giusta ....quella dell'eseguibile vb6(.exe) in
quanto in debug il sorgente viene eseguito dall'ide
prova a controllare app.path per directory giusta..
ciao

 Se non usata da altro prova a deregistrarla a oltranza.
ho fatto fi meglio , ho messo il percorso della dll originale che utilizza
il programma in c esistente ! adesso la situazione e' migliorata , non che
funzioni , pero' mi dice : "impossibile trovare il punto di ingresso ecc.."
mi metto a studiare un po va ... ^_^

 prova a mettere il tuo percorso completo, non solo il nome.
sai il bello ? mi accetta solo quella registrata scartando la mia
ricompilata !!! :(
cmq sono riuscito a usarla, spulciando per bene internet , sito M$ , msdn ho
trovato il file DUMPBIN.exe , e' stupendo , gli passo le DLL e mi dice il
nome delle funzioni ... che carini sti programmi , se non lo conoscete , ci
tenevo a segnalarvelo !
fornisce moltissime info sulle dll quali dipendenze ma la cosa + carina per
i miei esperimenti e' :
 ordinal hint RVA      name
          1    0 00045400 GetErrorText
          2    1 00045440 GetInfoText
          3    2 00045450 Install
          4    3 0002F130 patch_getmessage
          5    4 0002EEB0 patch_setup
mi dice il nome delle funzioni presenti per provare a farci delle prove !

 impossibile trovare nomefile.dll
http://www.dependencywalker.com/

 ricompilata !!! :(
perņ resta il fatto che quel tipo di dll non va registrato.....
se mi spieghi come hai fatto?...
ciao

 se mi spieghi come hai fatto?...
allora chiarisco il discorso con un po di dati :
file dll  = file1.dll
file exe che usa la dll = File2.exe
ora di questi 2 file ho anche i sorgenti in vcc e io volevo fare l'exe col
VB anziche tenermi quella fatta in c!
Ok , adesso viene il bello , modifico la dll la rcompilo e la metto nella
cartella del mio VBP , non va , creo l'exe e li metto in una cartella , non
va ( Impossibile trovare ecc. ecc.. ) ecc...
gli faccio leggere invece la patch della dll originale e va , l'unico modo
che ho trovato e' cambiare la mia dll modificata con quella originale ^_^
cmq ammmetto che molti errori sono causati dalla mia inesperienza con le dll
!
poi ho risolto anche il problema del punto di ingresso ! ( sbagliavo a
chiamare una funzione da codice ) !
Grazie per il supporto !

 file exe che usa la dll = File2.exe
chiariamo un attimo tutto il discorso..
1) le dll che vanno registrate sono "solo" quelle activex (quelle che crei
anche con vb per intenderci)
2) il tipo di dll che usi con declare "non" vanno registrate e come hai gia
detto devono essere inserite nel percoso dell'exe o directory di sistema
3) se avvii il tuo sorgente nell'ide con f5 per windows il programma avviato
sarà vb6.exe e di conseguenza la directory per le dll sarà sempre quella di
vb6.exe (se controlli app.path ne avrai conferma).Compilando in exe il tuo
programma non concludi niente in quanto non verrà eseguito dall'ide.Solo
dopo avviando l'exe sarà presa in considerazione la directory dello stesso
:))
4) i nomi giusti per la tua dll in C vanno esportati in un file.def e
dichiarati come "extern C  stdcall" altrimenti vc aggiunge mille decorazioni
:) (ma forse questo ti interessa meno)
spero di esserti stati utile ..
ciao :)

 spero di esserti stati utile ..
moltissimo ! Grazie !

ciao , Gigio2K!
a riguardo:
[..skip..]
 > DUMPBIN.exe , e' stupendo , gli passo le DLL e mi dice il nome delle funzioni ... che carini
 > sti programmi , se non lo conoscete , ci tenevo a segnalarvelo !
grazie della segnalazione, ma...
[..skip..]
 >           1    0 00045400 GetErrorText
 >           2    1 00045440 GetInfoText
 >           3    2 00045450 Install
 >           4    3 0002F130 patch_getmessage
 >           5    4 0002EEB0 patch_setup
 > mi dice il nome delle funzioni presenti per provare a farci delle prove !
...vedo che ti dice i nomi delle routin esportate!
ora tu hai i sorgenti della dll, tutto facile se scritto per VB,
altrimenti come facevi le prove?
eventuale/i parametro/i e relativo/i tipo/i.
se la fun restituisce un valore, stessa domanda, che tipo? (calmo, nervoso, :))
anime disposte ad alimentare l'ot?
difficile senza sdk, vero?
perdonatemi!
special ciao a tutte le Anime del NG!
--
uniubbino!

 difficile senza sdk, vero?
cioe' ?