gpt4 book ai didi

我可以获得内存中已有数据支持的 FILE* 吗?

转载 作者:可可西里 更新时间:2023-11-01 10:46:30 24 4
gpt4 key购买 nike

我的代码目前使用一个库,我将 FILE* 传递给该库,它使用 fread() CRT API 读取一堆复杂的配置数据。我想移动文件以成为文件中的嵌入式资源(Windows DLL)。不幸的是,读取 Windows 资源会直接将数据作为 void*....我无法传递给图书馆。

我想要的是能够获得一个由内存缓冲区而不是磁盘上的文件支持的 FILE*。 Windows 有 CreateStreamOnHGlobal(),但它使用 IStream*,我需要一个 FILE*。不幸的是,我找不到适用于 Windows 的任何解决方案。 这可能吗?

我可以使用的解决方案是将资源数据写入临时文件,将临时文件传递给配置解析器,然后删除文件....但效率极低,我处理大量数据。

最佳答案

你真正想要的是 fmemopen() 的等价物在 Windows 上。不存在这样的等价物。

您可以使用命名管道作为解决方法。您应该能够使用 fopen() 打开命名管道的读取端。资源提供者随后将 FILE * 传递给配置解析器,同时其他线程将资源数据写入命名管道的写入端。只要解析器只想对文件进行顺序读取(而不是查找,这在管道上不起作用),这应该没问题。

如果你愿意用Cygwin , 它提供了 fmemopen() .

关于我可以获得内存中已有数据支持的 FILE* 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22548443/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com