J'essaie de passer une chaîne de C# à Delphi construit DLL. La DLL Delphi attend PChar.Passage de chaîne en tant que PChar de CSharp à Delphi DLL
est ici export Delphi
procedure DLL_Message(Location:PChar;AIntValue :integer);stdcall;
external 'DLLTest.dll';
C# importation (dernier j'ai essayé, il y avait chaîne, char * chaîne ref ...)
[DllImport(
"DLLTest.dll",
CallingConvention = CallingConvention.StdCall,
CharSet = CharSet.Ansi,
EntryPoint = "DLL_Message"
)]
public static extern void DLL_Message(IntPtr Location, int AIntValue);
Je reçois valeur accès à la violation d'accès dans tout façon.
Existe-t-il une solution pour transmettre une valeur de chaîne en tant que PChar en C#? Essayez l'attribut MarshalAs qui vous permet de contrôler le type natif utilisé.
MarshalAs pas nécessaire ici. C'est le marshaling par défaut. De même pour les paramètres de l'attribut DllImport. Seul le nom de fichier est requis. –
Etes-vous sûr de ça? N'est pas le UnmanagedType.LPWStr par défaut (UTF-16)? –
Apparemment, il est BStr: http://msdn.microsoft.com/en-us/library/s9ts558h.aspx –