我正在使用一个库,他们使用路径来定义输入和输出文件的数据读取/写入。从字符串创建FILE *
App1
写入输入文件,App2
读取该输入文件并创建输出文件。然后,App1
读取输出,每个人都很高兴。
现在我们得到App1
和App2
之间的通讯不再需要创建文件了。因此,App1
应将缓冲区传递到App2
(简单的char*
)以及App2
应将结果写入的预分配输出缓冲区。
不幸的是,在App2
中使用的整个库中,使用FILE*
来读取/写入。
所以,这里的问题:我能实现– 它无需重写由应用2 使用的库–(或小的变化),我可以使用来自App1
通过缓冲区App2
的信息交流?恕我直言,这将需要我可以创建一个FILE*
从缓冲区没有那FILE*
在磁盘上。
我读到.NET的我可以使用System.IO.StringReader
类,但由于我使用普通的C++和没有.NET,我不能使用这些东西。
额外的好处:
呼叫者(即App1
)被托管代码(C#应用程序),则被叫方(即App2
)是一个普通的C++ DLL(即App1
在DLL调用的函数)。
编辑:
我赞成的答案,其中数据交换可以在调用者传递的缓冲区到被叫方,被叫方从输入缓冲区读取和写入到输出缓冲区的方式同步发生,那么被调用者终止并且调用者可以读取缓冲区的内容。
对于最后一部分,只需在调用者中创建一个处理被调用者的线程即可。 – MSalters
@ MSalters:hm。这将是结果。试图避免这... – eckes