use*_*478 5 .net c# marshalling
我有一个未损坏的COM对象的方法,我正在尝试编组:
STDMETHOD(SomeMethod)(LPSTR** items, INT* numOfItems) = 0;
Run Code Online (Sandbox Code Playgroud)
但我无法找出正确的方法来整理LPSTR**物品.它应该是一个项目列表.但是,如果尝试做这样的事情:
[PreserveSig]
int SomeMethod([MarshalAs(UnmanagedType.LPStr)]ref StringBuilder items, ref uint numOfItems);
Run Code Online (Sandbox Code Playgroud)
我只得到第一个项目的第一个字母而没有别的.
如何正确编组LPSTR**变量?
我现在无法检查,但签名应该如下所示:
[PreserveSig]
int SomeMethod(
[MarshalAs(UnmanagedType.LPArray, ArraySubType = UnmanagedType.LPStr, SizeParamIndex = 1)] out string[] items,
out int numOfItems);
Run Code Online (Sandbox Code Playgroud)
当然,这没有帮助,您始终可以通过Marshal类执行手动编组(如 Sinatr 建议的那样)。
| 归档时间: |
|
| 查看次数: |
443 次 |
| 最近记录: |