序言
ODB算是很常用的數(shù)據(jù)庫ORM庫了时鸵。其對象化技術相當實用和簡潔谚中,但坑也不少,還缺乏中文參考資料寥枝,慘慘慘。這篇文章用以記錄ODB使用過程中遇到的經驗教訓磁奖。
坑
1. 基礎坑
1.1 庫的依賴順序
編譯時囊拜,如果存在一條依賴鏈,而鏈里還有其他的依賴鏈時比搭,比如'liba'依賴'libb'和'libc',而'libb'又依賴于'libc'冠跷。其引入的順序必須是需要依賴他庫的在前,被依賴的在后,也就是-la -lb -lc
蜜托。不然就會出現(xiàn)# [Undefined reference](https://www.codesynthesis.com/pipermail/odb-users/2015-February/002407.html)
錯誤抄囚。
1.2 靜態(tài)庫下的unknown database schema ''
運行錯誤
這是schema_catalog::create_schema()
引發(fā)的錯誤。原因是靜態(tài)庫在鏈接時橄务,未使用的代碼文件是不會鏈接的幔托。方法是:
- GCC: 使用
-Wl,-whole-archive
和-Wl,-no-whole-archive
包裹目標靜態(tài)庫,這樣就能使其全部文件均被鏈接蜂挪。 - 通用: odb編譯hxx文件時重挑,使用
--schema-format separate
來額外產生一個獨立的schema代碼文件。與其他部分分離后就可以直接包含他們而無需去調用靜態(tài)庫
(未完待續(xù))