Puntatore Array C++ - Vb.Net

martedì 16 febbraio 2016 - 09.22
Tag Elenco Tags  VB.NET  |  .NET 2.0  |  Visual Studio 2005

mmjc23 Profilo | Newbie

Buongiorno a tutti.

Ho un problemino nel convertire una funzione C++ in Vb.Net; cerco di spiegare brevemente la situazione.
Ho alcuni programmi, scritti in diversi linguaggi di programmazione, che accedono ad alcune informazioni mediante delle chiamate ad una DLL esterna (chiamiamola CppDll.dll). Di questa Dll, so cosa ritorna, ma non ho i sorgenti.
Avrei quindi la necessità di riscrivere la Dll in Vb.Net in modo che, ai programmi che la chiamano, ritorni gli stessi valori ritornati da CppDll.dll, ma ho qualche problema con una funzione che ritorna un puntatore ad un array di long (integer in vb.net)

Queste di seguito, le definizioni della funzione e dell'array passato come descritto nel PDF della CppDll.dll:
long Dt[256]; /* Buffer to read short DLL_Read( long Param1, long *Param2, short Param3, short Param4, short Param5 );

Ho provato quindi a riscrivere la DLL in Vb.Net...Tutte le altre funzioni riscritte in VB.NET e richiamate dai diversi programmini, funzionano correttamente, mentre questa, che deve ritornare l'array, mi genera un errore di "Access violation at address....".
Questo il codice della funzione nella mia DLL:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Ho provato anche a definire Param2 come IntPtr e fare dei "Marshal.Copy", ma probabilmente sbaglio qualche cosa...
Sapete aiutarmi per favore?

Grazie mille
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