[问题] C++ dll传递含有char array的struct

楼主: petercoin (彼得币)   2015-06-05 15:47:18
我手上有一个C++写的dll
现在在C#写的程式内使用这个dll
在这个dll内有一个struct
typedef struct _A
{
WCHAR buf[64];
DWORD index;
} A;
会被当成function的参数传递
int funA(A *a)
{
a.buf...;
index = ...;
}
现在我想在C#内叫用funA
[DllImport("Mydll.dll", CallingConvention = CallingConvention.StdCall, CharSet
= CharSet.Unicode)]
public static extern int funA(IntPtr a);
有先确认过dll确实有值在buf里面
但是不管怎样都没有办法得到buf的内容
在猜想会不会是memory没有正确传递?
想请教一下该如何才能正确将dll传的值抓出来呢?
作者: Litfal (Litfal)   2015-06-07 04:49:00
你有在C#里面定义struct _A并建立unmanaged内存再传吗?
楼主: petercoin (彼得币)   2015-06-07 20:51:00
C#内我有定义struct A了 但是unmanaged的内存要怎么宣告 可否帮忙给个关键字?
作者: Litfal (Litfal)   2015-06-09 16:36:00
Marshal.StructureToPtr另外你给的资讯不够,重要的C#端如何定义struct你都没给依据定义方式不同,字段可能需要用MarshalAs的属性去标记还有,你的buf究竟是C++去alloc后传址给C#、还是C#就alloc完成,lib端只负责填满内存,都会影响到写法

Links booklink

Contact Us: admin [ a t ] ucptt.com