odb踩坑记录

序言

ODB算是很常用的数据库ORM库了。其对象化技术相当实用和简洁,但坑也不少,还缺乏中文参考资料,惨惨惨。这篇文章用以记录ODB使用过程中遇到的经验教训。

1. 基础坑

1.1 库的依赖顺序

编译时,如果存在一条依赖链,而链里还有其他的依赖链时,比如'liba'依赖'libb'和'libc',而'libb'又依赖于'libc'。其引入的顺序必须是需要依赖他库的在前,被依赖的在后,也就是-la -lb -lc。不然就会出现# [Undefined reference](https://www.codesynthesis.com/pipermail/odb-users/2015-February/002407.html)错误。

1.2 静态库下的unknown database schema ''运行错误

这是schema_catalog::create_schema()引发的错误。原因是静态库在链接时,未使用的代码文件是不会链接的。方法是:

  • GCC: 使用-Wl,-whole-archive-Wl,-no-whole-archive包裹目标静态库,这样就能使其全部文件均被链接。
  • 通用: odb编译hxx文件时,使用--schema-format separate来额外产生一个独立的schema代码文件。与其他部分分离后就可以直接包含他们而无需去调用静态库

(未完待续)

你可能感兴趣的:(odb踩坑记录)