J'ai une méthode dans l'objet COM unmaged que je suis en train de Marshall:Comment marshaler LPSTR ** dans .NET?
STDMETHOD(SomeMethod)(LPSTR** items, INT* numOfItems) = 0;
Mais je ne peux pas trouver la bonne façon de maréchal en LPSTR ** articles. C'est censé être une liste d'éléments. Toutefois, si essayer de faire quelque chose comme ceci:
[PreserveSig]
int SomeMethod([MarshalAs(UnmanagedType.LPStr)]ref StringBuilder items, ref uint numOfItems);
Je ne reçois la première lettre du premier élément et rien d'autre.
Comment puis-je marshaler correctement la variable LPSTR **?
Cela devrait être plus comme 'StringBuilder []'. Vous pouvez marshaler ce paramètre manuellement, voir par exemple [cette question] (http://stackoverflow.com/q/16857034/1997232). – Sinatr
@Sinatr, j'ai essayé d'utiliser StringBuilder [] mais dans ce cas je reçois cette erreur: "Managed Debugging Assistant 'ContextSwitchDeadlock' s'est produit". Jetez un oeil sur le lien que vous avez fourni cependant. – user208478
Quelle est la direction de triage? Dans, dehors, les deux? – arbiter