我有一个用c ++编写的dll导出的函数,带有以下符号:
Foo( LPSTREAM *pStream, UINT &Size )
返回内存流,显然是它的大小。我遇到的困难是为导出的函数创建一个签名,然后尝试在C#中读取流。有一次能够使用“不安全”字节指针来获取信息,但这不符合我们的要求。
任何想法,例子,样品等都将不胜感激。
答案 0 :(得分:0)
你可以这样做:
[DLLImport(@"mydll.dll")]
public static extern void Foo(out ComTypes.IStream Stream, ref uint Size);
这样称呼:
ComTypes.IStream Stream = null;
uint Size;
Foo(out Stream, ref Size);
正常情况下,请确保您的调用约定匹配(C#默认为stdcall,C ++默认为cdecl)。
顺便说一下,为什么Size
知道它的大小,并且会告诉你是否要求它,为什么要将IStream
与流分开?