+ Rispondi al messaggio
Visualizzazione dei risultati da 1 a 6 su 6

VB 2010 callback funzione DLL c++ 6.0

  1. #1
    mattew75 non è in linea Novello
    salve a tutti,

    vi propongo il mio problema :

    1) ho una DLL sviluppata in Visual C++ 6.0
    2) ho creato in passato un programma in VB 6 che chiama e usa questa funzione e tutto funziona alla perfezione.
    3) ora sto provando ad aggiornare il mio software in VB 2010, ma non riesco a risolvere il problema della chiamata della DLL in quanto mi crea problemi allo STACK.

    Ho letto molte informazioni ed ho capito che il problema è come NET chiama le DLL ed è un problema di marshalling. Dopo giorni di test non sono riuscito comunque a risolvere il problema e spero qualcuno possa aiutarmi a tradurre questa piccola parte

    nello specifico:

    questo il mio codice VB 6.0

    Public Type STRUTTURA
    s(0 To 123) As Byte
    byAlarmIn As Byte
    byAlarmOut As Byte
    byDisk As Byte
    byType As Byte
    byChan As Byte
    byStart As Byte
    End Type

    Declare Function FUNZIONE Lib "mydll.dll" (ByVal sDVRIP As String, ByVal wDVRPort As Long, ByVal sUserName As String, ByVal byvalsPassword As String, ByRef INFO As STRUTTURA) As Long

    e questa la chiamata alla DLL in VB 6 :

    Dim I As STRUTTURA

    result = FUNZIONE(var1, var2, var3, var4, I)

    il problema che si genera nella traduzione in VB 2010 è un problema allo STACK legato all PInvoke

    Mi può aiutare qualcuno a risolvere il problema?

    Grazie mille

    Mattew

  2. #2
    L'avatar di bumm
    bumm non è in linea Topo di biblioteca Ultimo blog: [VB2010] ComboBox ed Enumeratori
    Beh, la differenza essenziale e che tutti gli tipi Long vanno sostituiti con Int32 o IntPtr in caso dei handle

    Non avendo la libreria o la" signature" nativa della funzione - difficile risponderti. Provi a fare come segue:

    <StructLayout(LayoutKind.Sequential)> _
    Private Structure STRUTTURA
       <MarshalAs(UnmanagedType.ByValArray, SizeConst:=123)> _
     Dim s() As Byte
     Dim byAlarmIn As Byte
     Dim byAlarmOut As Byte
     Dim byDisk As Byte
     Dim byType As Byte
     Dim byChan As Byte
     Dim byStart As Byte
     End Structure
    
      Declare Function FUNZIONE Lib "mydll.dll"(ByVal sDVRIP As String, ByVal wDVRPort As Int32 , ByVal sUserName As String, ByVal byvalsPassword As String, ByRef INFO As STRUTTURA) As Int32
    
    ℹ️ Leggi di più su bumm ...

  3. #3
    mattew75 non è in linea Novello
    Perfetto,

    grazie mille ora funziona.

    Grazie grazie grazie

  4. #4
    L'avatar di GarGia1960
    GarGia1960 non è in linea Scolaretto
    Scusatemi se mi intrometto:
    siccome ho avuto anch'io un problema simile, ma la SizeConst:=123 che cosa riguarda,

    perche se l'array s() fosse una Int32 si dovrebbe scrivere SizeConst:=123*4 ______________________________ REM (492)
    Ultima modifica di GarGia1960; 22-09-2010 16:02 

  5. #5
    E' l'attributo che definisce solo la grandezza della matrice e non dell'intera struttura.

    Ho però il dubbio che la dimensione possa essere 124 e non 123 ((0 to 123) = 124), ma potrei sbagliarmi.
    ℹ️ Leggi di più su Fix ...

  6. #6
    L'avatar di bumm
    bumm non è in linea Topo di biblioteca Ultimo blog: [VB2010] ComboBox ed Enumeratori
    Quote Originariamente inviato da Fix978 Visualizza il messaggio
    Ho però il dubbio che la dimensione possa essere 124 e non 123 ((0 to 123) = 124), ma potrei sbagliarmi.
    Ciao Fix978!
    Hai ragione, credo che deve essere 124.
    ℹ️ Leggi di più su bumm ...

+ Rispondi al messaggio

Potrebbero interessarti anche ...

  1. Intercettare callback dei ribbon/shortcut menu di sistema
    Da Max.Riservo nel forum Microsoft Access
    Risposte: 10
    Ultimo Post: 18-04-2020, 21:47
  2. [VB.Net 2010] - Problema con la funzione kernel32
    Da GarGia1960 nel forum Visual Basic .Net
    Risposte: 0
    Ultimo Post: 02-03-2013, 11:41
  3. delphi callback da c++ dll
    Da GianPiero nel forum Delphi
    Risposte: 1
    Ultimo Post: 22-10-2012, 20:47
  4. [VB 2010] Simulare un puntatore a funzione
    Da fabiranni nel forum Visual Basic .Net
    Risposte: 11
    Ultimo Post: 07-06-2012, 17:19
  5. [Access 2010 ] Funzione carica tabella XLS
    Da max-paso nel forum Microsoft Access
    Risposte: 3
    Ultimo Post: 28-09-2011, 19:15