読者です 読者をやめる 読者になる 読者になる

Bye Bye Moore

猫マンション建築の野望を胸に零細事業主として資本主義の荒波に漕ぎ出したアラサー男の技術メモ

"multiple definition of ..."とか出ていたら、ライブラリを多重に読み込んでいる可能性

arduino

Arduino用スケッチにて"multiple definition of ..."とか出ていたら……ライブラリを多重に読み込んでいる可能性があります。
お手製ライブラリを組み込んだアプリを受け取った際に起こりがちです。
依存関係を消して、再度ライブラリを導入すると何とか成るかも。

実際のところ

上記の事がおこると、こんなエラーがでてきます。

/Users/shuzo_kino/Documents/Arduino/libraries/hoge/fuga:26: multiple definition of fuga::piyo(int)'

もしかすると、こんなエラーも同時に出てるかも

sketch/fuga.cpp.o:sketch/fuga.cpp:51: first defined here

これは自前ライブラリが競合をおこしてる事が原因と考えられます。
特に、以下のように同一ディレクトリ階層にライブラリの本体が存在した状態で
zip形式のライブラリを読んでしまうと発生してしまう様子。

$ ls 
main.ino
fuga.cpp
fuga.h
...

対策としては、一旦ZIPを抹殺した後、同階層の各ファイルも削除、その状態でZIP形式ライブラリを再読込……とするとうまくいくようです。