Newsgroup: it.comp.lang.visual-basic
Titolo: Problemone con le DLL!!

Sono disperato !!
Ecco il mio problema: la mia applicazione interagisce con delle DLL
scritte in C++ e fin
qui tutto OK.
Dichiaro le mie subroutine e/o function che utilizzano le DLL con
l'istruzione DECLARE
ed esattamente:
Public Declare Function ReturnBool Lib "esseio.dll" _
(ByRef var As Byte) As Boolean
dove esseio.dll è la mia dll da utilizzare.
Il file esseio.dll è presente nella directory dove è posto il file vbp
e su alcuni computer
funziona a meraviglia.
Su altri, invece, si rifiuta di trovare la dll ed il risultato non
cambia se metto il percorso
completo nella dichiarazione della subroutine.
Ho anche provato a registrare la dll con regsvr32 ma non ci sono
riuscito e, quindi, mi
ritrovo con un'applicazione che a volte funziona ed a volte no.
    Qualcuno si è trovato nella mia situazione e sa come risolvere il
problema ?
        Grazie mille
            Massimo
bon...@help.it

Prova a mettarla nel system di windows

...



Come faccio a registrare correttamente la DLL nel sistema? Utilizzo
regsvr32.exe e se si, quale è la sintassi corretta?
        Grazie Mille
            Massimo

Per la registrazione con regsvr32 la sintassi corretta è regsvr32.exe
path:\dllname.dll se la tua dll non ha necessità di una cmdline,
diversamente regsvr32.exe /i:[cmdline] path:\dllname.dll. Ma dato che l'hai
sviluppata con Visual C++ utilizzza il setupkit, crea un vero e proprio
setup per la tua dll quindi installala (magari come shared). Non avrai +
problemi.
:)

GC ha scritto:

  Io digito il comando:
        regsvr32 c:\windows\system\esseio.dll
e regsvr32 mi da l'errore:
        LoadLibrary("c:\windows\system\esseio.dll") failed.
        GetLastError returns 0x00000485.
Cosa faccio, mi sparo ?
            Grazie Mille
                Massimo

Ciao. Se puoi usare la declare vuol dire che esseio.dll non è una dll COM,
quindi è ovvio che la registrazione fallisca. Piuttosto è una dll standard,
per cui bisogna, come fai, dichiarare le funzioni e poi usarle. Il problema
sta solo nel far vedere la dll al programma vbp che chiama le funzioni ivi
contenute. Se la metti dove sta il vbp rischi che magari hai la PATH
impostata, altri pc no, e quindi non la trovano. Ti consiglio invece di
metterla in Windows\system.
Saluti,
Domenico


...

Le DLL scritte in C/C++ non vanno registrate a livello di sistema!
A meno che non siano DLL ActiveX (come quelle create da VB5).
Non ti so dare altre soluzioni al tuo problema, le variabili in gioco sono
molte...
--
Roal Zanazzi
z...@iol.it


Scusate, ma dove ha scritto Massimo che la DLL l'ha scritta con VisualC++?
Io ho letto solo che e' scritta in C++ (non e' detto che sia il Microsoft
Visual).
--
Roal Zanazzi
z...@iol.it


Nulla da fare, anche se la metto in c:\windows\system o in c:\windows il VB non
riesce a vederla.
Addirittura non la vede neanche se includo il path completo.
    Non so più a che Santo votarmi.
                Grazie comunque
                        Massimo

Addirittura non la vede neanche se includo il path completo.
Non ci posso credere, davvero non so che cosa dire. Vuoi provare a
mandarmela?
Domenico

 Domenico
  Cosa vuoi che ti mandi: la DLL o il progetto visual basic?
Il progetto è molto grande!
        Massimo

...



Se vuoi te la mando ma dubito che tu la possa provare, si occupa di leggere
alcuni tipi di files binari che vengono generati con un programma
interamente scritto in C++ (Borland).
Comunque se vuoi non ci sono problemi, fammelo sapere e ti invio la Dll e
declare relative.
        Massimo

         Massimo
  Fermi tutti!
Vi ringrazio ma credo di avere risolto il problema: la dll è stata compilata
con Borland C++ in modo tale da aver bisogno di alcune librerie Borland.
La dll non funzionava, quindi, sui pc che non avevano installato il Borland.
        Grazie lo stesso a tutti coloro che mi hanno aiutato (ed anche agli
altri)
            Massimo