2015-04-30 50 views
0

我有一些東西寫入C++中的carchive中,以便在C#中讀取。下面是C++代碼如何在C中讀取CArchive布爾值#

CString str= "string value"; 
BOOL firstBool=false; 
BOOL secondBool= True; 
Bool thirdBool= true; 
CMemFile file(DataBlob->GetData(), dLength); 
CArchive ar(&file, CArchive::load); 
ar << str<<firstBool<<secondBool<<thirdBool; 

下面是如何在讀C#

var br = new BinaryReader(new MemoryStream(file));      
var strCSharp= br.ReadString(); 
var firstBoolCSharp= br.readBoolean(); 
var secondBoolCSharp= br.readBoolean(); 
var thirdBoolCSharp= br.readBoolean(); 

問題:我不能先讀,在c#第二和第三布爾值。可能是什麼問題?

+1

不是一個直接的答案,但我會寫一個快速的C++/CLI DLL來使用MFC來讀取CArchive並交給.Net類。 – crashmstr

+0

我不知道CLI是否可以指點我其他方向 – WPFKK

+0

要繼續使用@crashmstr方式:即使沒有考慮CLI,也可以編寫一個C++ dll,它將公開用於讀取文件的方法,然後您將擁有將DLL的函數導入到C#代碼中,並完成:DllImport doc:https://msdn.microsoft.com/en-us/library/aa984739(v=vs.71).aspx – Sidewinder94

回答

0

最後我解決了它。

C++將Boolean寫爲整數「0」或「1」。因此,在C#的閱讀方面,它應該C#:bool result= binaryReader.ReadInteger()>0;來查明它是真是假。

這解決了我的問題。