Chiamare una dll VB6 da VB.Net

lunedì 27 giugno 2005 - 12.14

ladyubik Profilo | Newbie

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

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

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

Ah, dimenticavo... mi dà errore se cerco di aggiungere la dll nelle references
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 !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5