0

我有一个从用 c++ 编写的 dll 导出的函数,具有以下签名:

Foo( LPSTREAM *pStream, UINT &Size ) 

它返回一个内存流,显然它的大小。我遇到的困难是为导出的函数创建签名,然后尝试在 C# 中读取流。在某一时刻能够使用“不安全”字节指针来获取信息,但这不符合我们的要求。

任何想法、示例、示例等将不胜感激。

4

1 回答 1

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

于 2011-06-15T17:02:50.977 回答