2.編譯flatbuffer
解壓flatbuffers-master.zip檔案檔案,使用vs2015開啟flatbuffers-master\build\vs2015\flatbuffers.sln檔案進行編譯。編譯後生成的檔案如下:
(1).flatc.exe - 編譯schema檔案、生成**
(2).flatsamplebinary.exe - 測試程式,將二進位制轉換為c++物件
(3).flatsampletext.exe - 測試程式,將json轉換為c++物件
(4).flattests.exe - 測試flatbuffers
3.編寫test.fbs檔案
struct kv
table testobj
root_type testobj;
4.然後利用"flatc.exe"生成.**件,並使用此.**件
int _tmain(int argc, _tchar* ar**)
; auto kv = kv(1, 1.0);
auto name = fbb.createstring("123");
auto vec = fbb.createvector(v);
testobjbuilder builder(fbb);
builder.add_id(100);
builder.add_name(name);
builder.add_flag(1);
builder.add_list(vec);
builder.add_kv(&kv);
fbb.finish(builder.finish());
// 註冊
const char* names = obj->name()->c_str();
return 0;
}
5.json與c++物件相互轉換
flatbuffer的測試程式中有json與c++物件相互轉換的例子,但是不夠方便,在這裡我們可以封裝一下。
flatbufferjsonfactory.h
#include "typebind.h" // 詳見我的另一篇博文"c++模板之型別與資料繫結"
class flatbufferjsonfactory
std::string path; // fbs檔案路徑
flatbuffers::parser* parser; // flatbuffers解析器
};public:
// 將json字串轉換為了物件緩衝區
templatestd::string parserjson(const std::string& s)
// 將物件快取轉換為json字串
templatestd::string tojson(const void* buffer)
// 註冊
templatevoid register(const std::string& path)
templateconst parserinfo& getparser()
return info;
}static flatbufferjsonfactory& instance()
private:
flatbufferjsonfactory() {}
typebindm_map;
};
經典博文參考: 記一次FlatBuffers的簡單使用
其他命令使用 binary to json 這裡只記錄flatbuffers的簡單使用步驟,不涉及flatbuffers的介紹及原理,平台windows,語言c git clonecmake g visual studio 16 關於scheme檔案介紹及語法,可檢視官方文件介紹 monster.f...
EJunGrid使用總結
1 1。0版沒有實現垂直方向上的對齊,procedure tobgui reportdesign.griddrawcelltext acanvas tcanvas const arect trect const acoord tpoint agrid tzjgrid const text strin...
SDRAM使用總結
1,sdram的位址線,在我們一般用的什麼sram啊,psram啊,ram啊,一般而言都是有多少根位址線,然後可以算出定址空間,比如有11根位址線,那定址空間就是2的11次方減1。但是sdram是分列位址和行位址的,行 列位址線是復用的,所以有時候我們看到說定址空間有多大多大,但是看看位址線怎麼就那...