|
| HOMEPAGE | INDICE FORUM | REGOLAMENTO | ::. | NEI PREFERITI | .:: | RSS Forum | RSS News | NEWS web | NEWS software | |
| PUBBLICITA' | | | ARTICOLI | WIN XP | VISTA | WIN 7 | REGISTRI | SOFTWARE | MANUALI | RECENSIONI | LINUX | HUMOR | HARDWARE | DOWNLOAD | | | CERCA nel FORUM » | |
01-03-2007, 16.53.37 | #1 |
Senior Member
Registrato: 02-08-2003
Loc.: Lamezia Terme
Messaggi: 344
|
[VB.NET] COME IMPORTARE ED UTILIZZARE UNA DLL ESTERNA?
Qual'è il modo più rapido per potere accedere alle funzioni di questa dll che mi permettono di gestire il lettore di smat card? Inoltre, come si fa in genere a vedere quali sono i nomi delle funzioni di una dll? Dovrei basarmi su una documentazione esterna che mi viene fornita con la dll e soprattutto non mi viene abilitata la prediction automatica per queste funzioni mentre scrivo il codice come avviene invece per tutto il resto in .net? Cioè una volta richiamata la dll ed assegnata una reference che chiamo miaDll se scrivo: miaDll. non mi usciranno in automatico le funzioni di questa dll che ho importato e referenziato in qualche modo? Grazie come sempre! |
01-03-2007, 17.08.02 | #2 |
Gold Member
Registrato: 07-01-2002
Loc.: Milano
Messaggi: 2.863
|
Allora, andiamo per ordine... La dll va aggiunta come riferimento al progetto e questo mi sembra che tu l'abbia già fatto e suppongo anche che la dll sia essa stessa scritta in .net comunque:
Una votla che hai aggiunto la dll come riferimento, ti basta andare nel ramo Riferimenti o References, selezionare la dll e navigare seguendo l'alberatura, nel pannello principale ti si aprirà il visualizzatore oggetti che ti permetterà di vedere classi, metodi e proprietà esportati (e non ) dalla stessa liberia .. ed è così che va usata ..per esempio: Se la dll "pincopallino.dll" esporta un namespace di tipo "vattelapesca" con un metodo tipo: "pizzaefichi" per usarlo dovrò fare prima Imports del name space, poi creare un oggetto di tipo "vattelapesca" e poi usare su quell'oggetto il metodo "pizzaefichi", esattamente come già fai per le librerie di sistema che .net ti mette a disposizione. Ultima cosa, prima di usare la dll, vedi se è disponibile una documentazione di utilizzo, perché l'object browser ti permette soltanto di vedere metodi classi e proprietà ma nella maggior parte dei casi non ti dà altre spiegazioni esaurienti... |
01-03-2007, 17.29.57 | #3 |
Senior Member
Registrato: 02-08-2003
Loc.: Lamezia Terme
Messaggi: 344
|
Io sono andato in Riferimenti e ho cercato di aggiungere la dll tramite la scheda Sfoglia in cui mi permette di selezionare un file esterno.
Purtroppo appena faccio doppio click sulla dll mi dice: "Impossibile aggiungere un riferimento a "C:\percorso_della_dll\nomeDll.dll" Verificare che il file sia accessibile e l'assembly o il componente COM sia valido" Non riuscendo quindi ad aggiungerlo in questo modo ho pensato che inserendo una direttiva di Function Declare ... oppure un <Imports ... da codice comunque potessi utilizzare la dll o mi sbaglio? Bisogna per forza aggiungere il riferimento manualmente prima di poter importare la dll da codice vb net? Grazie! |
01-03-2007, 17.52.04 | #4 |
Gold Member
Registrato: 07-01-2002
Loc.: Milano
Messaggi: 2.863
|
Ecco appunto, la dll probabilmente non è scritta in .net e non è nemmeno scritta con interfaccia COM+ (hai provato anche ad aggiungerla dal tab COM?).. quindi devi usarla in modo "diretto" come utilizzeresti una API nativa del sistema...
Codice:
Imports System.Runtime.InteropServices; <DllImport("TUADLL.DLL", EntryPoint:="EntryPoint", _ SetLastError:=True, CharSet:=CharSet.Unicode, _ ExactSpelling:=True, _ CallingConvention:=CallingConvention.StdCall)> _ Public Shared Function AliasDelMetodo(ByVal Parametro _ As Tipo) As Ritorno ' Implementazione vuota, verrà riempita automaticamente a runtime End Function Fatto questo la chiami in modo statico Codice:
Ritorno = AliasDelMetodo(parametri...); DECLARE Function "nomealias" LIB "nomedll" AS "Alias"... Per ulteriori informazioni ed esempi cerca : "call api vb.net" Ultima modifica di P8257 WebMaster : 01-03-2007 alle ore 17.57.23 |
01-03-2007, 19.41.13 | #5 |
Senior Member
Registrato: 02-08-2003
Loc.: Lamezia Terme
Messaggi: 344
|
No, ho trovato la giusta dll e sono riuscito ad importarla tramite i riferimenti.
Praticamente a quella dll di prima è stata aggiunta un'altra dll che ha la funzione di fare una specie di transcodifica da vb6 a vb.net. Quindi ho aggiunto quella per dot net e non mi da alcun errore. Mi chiedevo solo se a questa dll dovessi anche aggiungere in qualche modo il riferimento alla precedente oppure se questo è fatto in automatico dalla nuova dll per dot net. Comunque ora l'unico problema è che quando avvio un pò di codice che ho scritto grazie al tuo aiuto mi dice che non riesce a trovare l'entry point. Come faccio? :| |
02-03-2007, 09.27.57 | #6 |
Gold Member
Registrato: 07-01-2002
Loc.: Milano
Messaggi: 2.863
|
Ok allora se hai trovato la dll gestita il mio ultimo post non ti serve ma è valido il ragionamento fatto nel mio primo post.. cioè vale a dire che hai la vita maggiormente semplificata dal fatto che la dll stessa è gestita, ti faccio un esempio di uso...
Io ho una dll che sichiama DataAccessLayer.dll che ha dei namespace all'interno con relative classi e metodi per l'accesso a varie basi dati... Tra i namespace esportati c'é il namespace DAL, quindi se io voglio usare questa dll in vb.net, non dovrò fare altro che aggiungerla nei riferimenti del progetto come hai fatto tu e poi scrivere semplicemente l'Imports della dll e poi istanziare un oggetto appartenente al namespace che voglio utilizzare, da questo oggetto poi potrò chiamare i metodi della classe oppuer estendere la classe a mio piacimento.. Esempio: Codice:
Imports DSiteDAL Module Module1 Sub Main() Dim D As DAL D.GetObjectsByDirectQuery() ...... End Sub End Module 1 importo la dll 2 istanzio l'oggetto 3 chiamo il metodo |
02-03-2007, 15.21.18 | #7 |
Senior Member
Registrato: 02-08-2003
Loc.: Lamezia Terme
Messaggi: 344
|
Si, ma il problema dell'entry point che non viene trovato?
|
03-03-2007, 11.52.24 | #8 |
Gold Member
WT Expert
Registrato: 09-01-2002
Loc.: None of your business
Messaggi: 5.505
|
Dipende da quali chiamate API vengono effettuate dalla dll in VB6 che dipendono a loro volta dalle librerie di sistema che a loro volta impongono tipologie di parametro.
L'errore di entry point dipende sempre da questi 3 fattori. Ti consiglio di ricompilare la stessa dll sotto VB.NET, modificando il codice VB6 della dll. |
Utenti attualmente attivi che stanno leggendo questa discussione: 1 (0 utenti e 1 ospiti) | |
Strumenti discussione | |
|
|
Discussioni simili | ||||
Discussione | Autore discussione | Forum | Risposte | Ultimo messaggio |
[SQL] Importare DB in locale | Gigi75 | Programmazione | 2 | 16-09-2007 21.58.56 |
Importare audio con Audio cleaning di Magix | Nikybz | Software applicativo | 2 | 26-06-2007 12.12.44 |
[VBNET] Importare una dll esterna... | Fast-M | Programmazione | 1 | 23-02-2007 15.01.03 |
[DB Postgres] Errore chiave esterna | GiulioCesare | Programmazione | 0 | 29-10-2004 18.05.51 |
[VB.NET] Come lanciare un'appl esterna... | wicasa | Programmazione | 1 | 29-06-2004 16.14.20 |