Bonjour,
Voila j'ai écrit un programme en C# et j'importes une DLL ecrite en C en utilisant PINvoke.
Voici ma fonction C
Dans mon programme C# j'ai :
Code : Sélectionner tout - Visualiser dans une fenêtre à part int myFunctionC(const char* asnModule, const char* pduName, ByteArray source, int length, ByteArray *destination)
Donc ma fonction est bien appelé, il n'y a pas d'erreur.
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
20
21
22 [DllImport("Asn1Transcoder.dll", EntryPoint = "myFunctionC",CharSet = CharSet.Ansi )] public static extern int myFunctionC( StringBuilder asnModule, StringBuilder pduName, StringBuilder source, Int32 lenght, [MarshalAs(UnmanagedType.LPStr)] StringBuilder destination ); public void callDLL() { StringBuilder asn = new StringBuilder(); asn.Append("monASN"); StringBuilder pduName = new StringBuilder(); pduName.Append("toro"); StringBuilder XER = new StringBuilder("text"); Int32 length; StringBuilder retour = new StringBuilder("",200); length = XER.Length; int k = myFunctionC(asn, pduName, XER, length, retour); }
Mon problème vient du fait que de mon parametre retour.
Du cote de la DLL ma valeur retour vaut "8F02"
Mais dans mon programme mon parametre retour vaut "P(ù".
Et je ne vois pas d'ou vient le probleme.
Si quelqu'un pouvait m'aider.
Merci.
Partager