我有一个从用 c++ 编写的 dll 导出的函数,具有以下签名:
Foo( LPSTREAM *pStream, UINT &Size )
它返回一个内存流,显然它的大小。我遇到的困难是为导出的函数创建签名,然后尝试在 C# 中读取流。在某一时刻能够使用“不安全”字节指针来获取信息,但这不符合我们的要求。
任何想法、示例、示例等将不胜感激。
你可以这样做:
[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