Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
.NET Framework
Chiamare una dll VB6 da VB.Net
lunedì 27 giugno 2005 - 12.14
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
ladyubik
Profilo
| Newbie
9
messaggi | Data Invio:
lun 27 giu 2005 - 12:14
Ciao a tutti, ho iniziato da pochissimo ad utilizzare .Net e mi sono arenata su un problema.
Ho scritto una dll in VB6 (non ActiveX) e vorrei chiamare una sua funzione da .Net. Ho provato a chiamare un po' di funzioni di base, che non effettuavano nessuna operazione o poco più e tutto è andato a buon fine. Il problema nasce quando chiamo funzioni che utilizzano array al loro interno. Viene generata un'eccezione AccessViolation.
Qualcuno mi può aiutare?
Grazie a tutti
Sara
ladyubik
Profilo
| Newbie
9
messaggi | Data Invio:
lun 27 giu 2005 - 12:26
Questa è la funzione nella dll di VB6
Public Function ProvaChiamata() As Boolean
Dim arrayProva(0 To 4) As Byte
Dim i As Integer
For i = 0 To 4
arrayProva(i) = 0
Next i
ProvaChiamata = False
End Function
Da .Net la chiamo così:
Public Module SmartCardModule
Sub Main()
Dim success As Boolean
Try
success = Form1.ProvaChiamata
Catch ex As Exception
MsgBox("Errore di inizializzazione della comunicazione")
End Try
End Sub
End Module
dove la classe Form1 è:
Public Class Form1
<DllImport("MyDll.dll", entryPoint:="ProvaChiamata", ExactSpelling:=True, SetLastError:=True)> _
Public Shared Function ProvaChiamata() As Boolean
End Function
End Class
ladyubik
Profilo
| Newbie
9
messaggi | Data Invio:
lun 27 giu 2005 - 12:43
Il problema è che ho utilizzato un trucco x creare una dll non activeX in VB6, x' dovevo utilizzarla su una stampante che non accettava DLL activeX. Ho trovato un articolo che spiegava come creare dll "normali" e ho utilizzato il metodo x' avevo già del codice in VB6 e riscriverlo in C++ sarebbe stato molto più lungo. In sostanza, quindi, è come se la mia dll fosse stata scritta in C++.
Se tolgo la parte che coivolge l'array nella dll cmq, tutto funziona perfettamente. Presumo che in qualche modo dovrei riucire ad allocare lo spazio per quell'array, ma non so come fare.
ladyubik
Profilo
| Newbie
9
messaggi | Data Invio:
lun 27 giu 2005 - 12:46
Ah, dimenticavo... mi dà errore se cerco di aggiungere la dll nelle references
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !