Aar*_*onN 8 c# c++ command-line-interface
如何将C#中的fstream或等效项通过CLI传递给非托管C++ DLL?
粗略的应用大纲:
我目前正在将二进制文件保存到磁盘并将其路径传递给CLI包装器,它将作为fstream打开.这适用于测试目的,但由于显而易见的原因不适用于生产.
我还研究了将一个字节数组传递给DLL,但是我无法找到将其转换为除了GlobalAlloc以外的其他fstream的方法,我不想使用它.
任何帮助或想法将不胜感激.
谢谢.
您可以将托管二进制数组传递给 C++/CLI DLL。固定阵列。然后可以将其转换为 STL 字符串对象。然后,您可以将 STL 字符串传递到继承自 iostream 的 STL stringstream 对象。将 stringstream 视为 .NET MemoryBuffer 对象。将 stringstream 传递给非托管 C++。这可能可以用不到 10 行代码来完成。缺点是数据将被复制到内存中,效率低下。对于许多应用程序来说,我怀疑这会是一个问题。
或者,您可以编写自己的类,继承自stream_buffer 来包装.NET 流对象。(最好继承它而不是像其他人建议的那样继承 iostream)。这将是最有效的方法,因为不会不必要地复制内存,但如果第一种方法足够快,我就不会费心这样做。
| 归档时间: |
|
| 查看次数: |
3923 次 |
| 最近记录: |