Telefonino.net network
 
| 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 » |

Torna indietro   WinTricks Forum > Software > Programmazione

Notices

Rispondi
 
Strumenti discussione
Vecchio 01-03-2007, 17.53.37   #1
Fast-M
Senior Member
 
Registrato: 02-08-2003
Loc.: Lamezia Terme
Messaggi: 344
Fast-M promette bene
[VB.NET] COME IMPORTARE ED UTILIZZARE UNA DLL ESTERNA?

Salve, ho una dll che risiede in un file esterno e gestisce un lettore di smart card e vorrei utilizzarla in vb .net.
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!
Fast-M non è collegato   Rispondi citando
Vecchio 01-03-2007, 18.08.02   #2
P8257 WebMaster
Gold Member
 
Registrato: 07-01-2002
Loc.: Milano
Messaggi: 2.863
P8257 WebMaster promette bene
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...
P8257 WebMaster non è collegato   Rispondi citando
Vecchio 01-03-2007, 18.29.57   #3
Fast-M
Senior Member
 
Registrato: 02-08-2003
Loc.: Lamezia Terme
Messaggi: 344
Fast-M promette bene
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!
Fast-M non è collegato   Rispondi citando
Vecchio 01-03-2007, 18.52.04   #4
P8257 WebMaster
Gold Member
 
Registrato: 07-01-2002
Loc.: Milano
Messaggi: 2.863
P8257 WebMaster promette bene
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
Ecco che qui l'esigenza di avere una documentazione diventa ancora più seria.. perché per usare questo codice devi sapere non solo l'entry point della dll, ma anche il nome del metodo (e i tipi di dati che riceve in input e in output) da sostituire a "tuometodo" e "parametro".

Fatto questo la chiami in modo statico
Codice:
Ritorno = AliasDelMetodo(parametri...);
In sostanza equivale alla vecchia sintassi VB:
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 18.57.23
P8257 WebMaster non è collegato   Rispondi citando
Vecchio 01-03-2007, 20.41.13   #5
Fast-M
Senior Member
 
Registrato: 02-08-2003
Loc.: Lamezia Terme
Messaggi: 344
Fast-M promette bene
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?
:|
Fast-M non è collegato   Rispondi citando
Vecchio 02-03-2007, 10.27.57   #6
P8257 WebMaster
Gold Member
 
Registrato: 07-01-2002
Loc.: Milano
Messaggi: 2.863
P8257 WebMaster promette bene
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
Come detto:
1 importo la dll
2 istanzio l'oggetto
3 chiamo il metodo
P8257 WebMaster non è collegato   Rispondi citando
Vecchio 02-03-2007, 16.21.18   #7
Fast-M
Senior Member
 
Registrato: 02-08-2003
Loc.: Lamezia Terme
Messaggi: 344
Fast-M promette bene
Si, ma il problema dell'entry point che non viene trovato?
Fast-M non è collegato   Rispondi citando
Vecchio 03-03-2007, 12.52.24   #8
LoryOne
Gold Member
WT Expert
 
Registrato: 09-01-2002
Loc.: None of your business
Messaggi: 5.502
LoryOne è un gioiello raroLoryOne è un gioiello raroLoryOne è un gioiello raro
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.
LoryOne non è collegato   Rispondi citando
Rispondi


Utenti attualmente attivi che stanno leggendo questa discussione: 1 (0 utenti e 1 ospiti)
 
Strumenti discussione

Regole di scrittura
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is ON
Gli smilies sono ON
[IMG] è ON
Il codice HTML è OFF

Vai al forum

Discussioni simili
Discussione Autore discussione Forum Risposte Ultimo messaggio
[SQL] Importare DB in locale Gigi75 Programmazione 2 16-09-2007 22.58.56
Importare audio con Audio cleaning di Magix Nikybz Software applicativo 2 26-06-2007 13.12.44
[VBNET] Importare una dll esterna... Fast-M Programmazione 1 23-02-2007 16.01.03
[DB Postgres] Errore chiave esterna GiulioCesare Programmazione 0 29-10-2004 19.05.51
[VB.NET] Come lanciare un'appl esterna... wicasa Programmazione 1 29-06-2004 17.14.20

Orario GMT +2. Ora sono le: 09.27.48.


E' vietata la riproduzione, anche solo in parte, di contenuti e grafica.
Copyright © 1999-2017 Edizioni Master S.p.A. p.iva: 02105820787 • Tutti i diritti sono riservati
L'editore NON si assume nessuna responsabilità dei contenuti pubblicati sul forum in quanto redatti direttamente dagli utenti.
Questi ultimi sono responsabili dei contenuti da loro riportati nelle discussioni del forum
Powered by vBulletin - 2010 Copyright © Jelsoft Enterprises Limited.