undefined reference to `typeinfo for クラス名'

C++で「undefined reference to `typeinfo for クラス名'」というよく意味の分からないエラーに遭遇した。

undefined reference to `typeinfo for BMI160Class'

どうも仮想関数(virtual が付いてる関数)を持つクラスで、仮想関数の最初の親クラスで実体が定義されていない場合に出るらしい。もうちょっとそれと分かるようなエラーメッセージにしてほしいし、

それはともかく、このエラーが発生したのは下記のArduino用ライブラリである。純正のArduino IDEArduino UnoやArduino Dueをターゲットにビルドしたときはエラーは出なかった。しかしルネサスArduino互換環境であるIDE for GRでGR-SAKURAをターゲットにビルドしたらエラーが発生した。

github.com

分からないのは、たしかに仮想関数はあるものの、親クラスにちゃんと実体が定義されているのである。ただ、実装がヘッダファイル(.hファイル)ではなくソースファイル(.cppファイル)に書かれていた。実装の記述をヘッダファイルに移すとエラーが消えた。

よくわからん。