Vai al contenuto
PLC Forum


Come Incorporare Una Dll Nell'eseguibile Vb6 - programmazione in vb


amiga

Messaggi consigliati

Ho creato un programma in vb con prodave.Ho chiamato la dll come modulo .

Se lancio l'applicazione e non ho la dll in system l'applicazione non parte , emettendo un messaggio di

mancato ritrovamento della w95_s7.dll.

Vorrei per evitare questo problema incorporare la dll nell'seguibile , non chiamandola in un modulo esterno, in modo tale da poter lanciare l'applicazione anche se su un altro computer la dll non è presente

Come si può fare?

Grazie molte :o

Link al commento
Condividi su altri siti


Esistono dei programmi che incorporano tutto nell'eseguibile in modo che non hai bisogno di librerie esterne.

La dll dovrebbe funzionare anche se si trova nella cartella stessa dove c'e' l'eseguibile.

Scusa ma se fai il programma in VB devi portarti dietro in ogni caso le librerie di base e gli eventuali OCX per cui che differenza fa se aggiungi anche la DLL nel pacchetto di installazione?

ciao

Roberto

Link al commento
Condividi su altri siti

La cosa che non mi è mai piaciuata in VB è proprio il fatto che non crea eseguibile standalone ma ha bisogno di tantissime librerie. Ogni componente è una libreria o quasi e te le devi portare tutte dietro. Meglio il C++ Builder o Delphi. Vabbè, alla fine è sempre questione di punti di vista.

Ti conviene creare un pacchetto d'installazione, se invece la includi nell'eseguibile la devi tirar fuori in qualche modo.

Secondo me c'è però il rischio di qualche problema all'avvio dell'eseguibile.

Infatti se tu hai un eseguibile con dentro una DLL inclusa come risorsa che estrai al momento dell'avvio del programma

e memorizzi in apposito file, suppongo che potrebbe nascere un messaggio d'errore ancor prima dell'estrazione di questa libreria se nel programma esiste un collegamento ad una funzione presente nella libreria.

Poi non so bene come ragiona il compilatore VB ma torno a ripeterti che un pacchetto d'installazione è la cosa migliore.

Ti saluto.

Link al commento
Condividi su altri siti

ciao

dipende , e' un punto di vista ,

ad ogni modo il compilatore visual basic praticamente non esiste, o almeno non e' una

cosa come il compilatore "c" o altri.

infatti il visual basic compilato e' un insieme di chiamate alle API o poco piu'.

le librerie sono necessarie appunto perche' egli (il visual basic) non integra quasi nulla da se stesso.

esiste la possibilita' di compilare in modo che le funzioni sparse qua e la' siano integrate

nel blocco principale , ma mi sembra che non lo usi nessuno.

ciao

dario

Link al commento
Condividi su altri siti

I programmi di cui parlavo io incorporano tutto e non estraggono nulla in fase di esecuzione. Ti ritrovi un eseguibile unico che rimane sempre tale.

Gli altri linguaggi sono in grado di creare eseguibili unici (in gergo informatico si parla di eseguibili monolitici) ma attualmente, come potete vedere dai programmi di installazione, la maggioranza usa librerie esterne per cui, di fatto, ci si ritrova nella stessa situazione di VB.

C# e i vari net sono carini ma per eseguirli ci vogliono oltre 20 Mb di net Framework (sono le librerie del Net).

Purtroppo la programmazione segue le mode senza pensare se siano veramente utili o meno per il progetto che si vuole creare. E cosi abbiamo programmi ottimi di pochi Kb che non hanno bisogno di librerie esterne ne creano file sparsi per il PC ne chiavi di registro e programmi che invece ti riempono di DLL, OCX e quant'altro e che riempono il registro di configurazione (autentica stronzata di Microsoft, fonte di innumerevoli guai) di chiavi per la maggior parte inutili che ti rimangono anche dopo la disinstallazione. Anche le Microsoft fa programmi del genere tant'e' che poi sul loro sito si trovano suggerimenti e programmi per rimuovere le tracce rimaste.

Il fatto e' che la programmazione adesso ha come obiettivo la produttivita' (fare programmi nel piu' breve tempo possibile per venderli subito) ma non la qualita'. Ecco cosi' spegate le varie versioni (nella pubblicita ognuna e' piu' stabile veloce e bella della precedente), aggiornamenti continui e cosi' via.

Ciao

Roberto

Link al commento
Condividi su altri siti

REGISTRAZIONE DI UNA LIBRERIA

Si diceva che ogni installazione aggiunge Librerie al S.O. ed il kit di installazione effettua delle modifiche al Registry per ogni nuovo componente.

Nel caso in cui ci sia la necessità di registrare manualmente un libreria usare l'utilità REGSVR32.EXE.

Il programma è contenuto in C:\WINDOWS\SYSTEM e può essere eseguito da DOS o da Esegui di Windows

Per registrare un componente Regsvr32.exe c:\prova\nomefle.dll

Per deregistrarlo Regsvr32.exe c:\prova\nomefle.dll /u

I componenti EXE si registrano automaticamente alla loro prima esecuzione.

Se è necessario che la libreria si registri e si chiuda automaticamente allora è necessario aggiungere /regserver (/unregserver lo deregistra).

ciao buon lavoro

Link al commento
Condividi su altri siti

Salve amiga,

Vorrei per evitare questo problema incorporare la dll nell'seguibile , non chiamandola in un modulo esterno, in modo tale da poter lanciare l'applicazione anche se su un altro computer la dll non è presente

Come si può fare?

In anzitutto non puoi incorporare una DLL della siemens o chiunque altro costruttore dentro di un tua

API a livello codice, anche se fosse possibile, per questioni di copyright.

Secondo, si' puoi tracciare un link dinamico oppure statico tra l'API e la DLL.

Puoi anche accedere in modo implicito oppure esplicito.

Quando l'API trova il richiamo a un indirizzo esterno, a secondo il OS utilizzato, il instruction pointer

cerca nella cartella System oppure System32(in Win. ovvio).

Poi, se non trova niente, cerca nella cartella dove si trova l'API, e se ancora non c'e' niente li'

a volte ritorna nullo, avolte continua a cercare ovunque, questo dipende anche dalla portabilita' del OS.

La dll dovrebbe funzionare anche se si trova nella cartella stessa dove c'e' l'eseguibile.

Certo!

per cui che differenza fa se aggiungi anche la DLL nel pacchetto di installazione?

a punto !

Sono fatte a posta per quello.

La cosa che non mi è mai piaciuata in VB è proprio il fatto che non crea eseguibile standalone ma ha bisogno di tantissime librerie

Beh, come a detto anche Dario,il Basic e' stato sempre un linguaggio interpretato e non compilato,

anche se ci sono state delle versioni custom con dei file oggetti molto vicine al compilato.

Saluto

Link al commento
Condividi su altri siti

Salve,

Per registrare un componente Regsvr32.exe c:\prova\nomefle.dll

Per deregistrarlo Regsvr32.exe c:\prova\nomefle.dll /u

Si', ok ma....

Questo va bene per i componenti sw basati su COM technology,cioe' componenti activeX che devono

registrare il suo GUID nel registro di win.., cosi' potere accedere alla loro interfaccia server esposta.

Nel caso della DLL w95_s7.dll questo non e' necesario, visto che il accesso avviene impicitamente oppure

esplicitamente da puntatori alle loro data e member functions.

Saluto.

Link al commento
Condividi su altri siti

Crea un account o accedi per commentare

Devi essere un utente per poter lasciare un commento

Crea un account

Registrati per un nuovo account nella nostra comunità. è facile!

Registra un nuovo account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...