Bonjour,
J'ai une méthode en C dont voici les paramètres :
long indx,long *ArticleNo,long *LineNo,long *Quantity,long *OrderOrReturnNo,BSTR *Barcode,long *TaxType,long *TotalAmount,BOOL *FractionGoods,BOOL *BulkyItem,BOOL *Bargain,BOOL *SubTotPreVoidLine,
BOOL *ReturnItem,BOOL *PayInAdvance
Je dois appeller cette méthode à partir de mon code VB.net...
Ce code C se trouve dans une dll qui a été importée via add reference dans vs2008...
Je l'appelle en VB comme suit :
Généralement cela se passe bien mais de temps en temps, je reçoit l'erreur suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 Dim madll As New RECEIPTCLASSLib.Receipt Dim ArticleNo As Long, LineNo As Long, Quantity As Long, OrderOrReturnNo As Long Dim BarCode as string,TaxType As Long, TotalAmount As Long, FractionGoods As Integer Dim BulkyItem As Integer, Bargain As Integer, SubTotPreVoidLine As Integer Dim ReturnItem As Integer, PayInAdvance As Integer madll.GetTicketItem(indx, ArticleNo, LineNo, Quantity, OrderOrReturnNo, _ BarCode, TaxType, TotalAmount, FractionGoods, BulkyItem, Bargain, _ SubTotPreVoidLine, ReturnItem, PayInAdvance)
Je suis en framework 2.Attempted to read or write protected memory. This is often an indication that other memory has been corrupted
J'ai désactiver l'optimisation de la compilation dans les paramètres avancé de l'application...
Je n'ai pas accès au code de la dll
Mes questions sont donc :
- Quel est la meilleur façon d'importer ma dll et d'appeller la méthode?
- Est-ce que l'erreur peut venir du fait que ma méthode utilise des pointeurs comme paramètre en référence?
- Est-ce que changer mes déclarations de variables comme suit pourrait résoudre le problème ?
Je vous remercie d'avance pour toute aide qui me serai apportée.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 Private ArticleNo As IntPtr Private LineNo As IntPtr Private Quantity As IntPtr Private OrderOrReturnNo As IntPtr <MarshalAs(UnmanagedType.BStr)> Private BarCode As String Private TaxType As IntPtr Private TotalAmount As IntPtr <MarshalAs(UnmanagedType.Bool)> Private FractionGoods As IntPtr <MarshalAs(UnmanagedType.Bool)> Private BulkyItem As IntPtr <MarshalAs(UnmanagedType.Bool)> Private Bargain As IntPtr <MarshalAs(UnmanagedType.Bool)> Private SubTotPreVoidLine As IntPtr <MarshalAs(UnmanagedType.Bool)> Private ReturnItem As IntPtr <MarshalAs(UnmanagedType.Bool)> Private PayInAdvance As IntPtr <MarshalAs(UnmanagedType.BStr)> Private thehost As String <MarshalAs(UnmanagedType.BStr)> Private DateTimeStr As String Private PosNo As Int32 Private TicketNo As Int32 <MarshalAs(UnmanagedType.Bool)> Private Unique As IntPtr
Partager