我想知道是否有人对此有任何见解。
我有一个本地的C++对象(在DLL中),它使用boost::archive写入其数据。
该项目由C#应用程序(通过C++/CLI类)使用,并且我想将多个这些存档存储在一个压缩文件中。我正在使用C#中的Ionic.Zipfile(DotNetZipFile)。
目前,我正在写入到临时文件,然后使用ZipFile.UpdateFile添加到存档中,但是想避免中间人。
所以,这就是我想要做的:
C#:
C++/CLI:
我有一个本地的C++对象(在DLL中),它使用boost::archive写入其数据。
该项目由C#应用程序(通过C++/CLI类)使用,并且我想将多个这些存档存储在一个压缩文件中。我正在使用C#中的Ionic.Zipfile(DotNetZipFile)。
目前,我正在写入到临时文件,然后使用ZipFile.UpdateFile添加到存档中,但是想避免中间人。
所以,这就是我想要做的:
C#:
ZipEntry ae = archive.UpdateEntry("Project", (f, stream) =>
{
pManagedObjectWrapper.Save(stream);
});
C++/CLI:
void ManagedObjectWrapper::Save(System::IO::Stream ^ stream)
{
std::ofstream *myofstream = MAGICALFunction(stream);
pUnmanagedObject->Save(myofstream);
}
C++:
void UnmanagedObject::Save(std::ofstream *myofstream)
{
boost::archive::binary_oarchive oa(*myofstream);
oa << *this;
}
有关MAGICALFunction
的任何帮助?
streambuf
或ostream
并将其传递给System.IO.Stream
,然后将其传递给UnmanagedObject::Save()
。这不是一个容易上手的事情。 - xanatos