2 セットのオブジェクトから共有オブジェクトをコンパイルしようとして、このエラーに遭遇しました。最初のセットには、SWIG によって生成された 1 つの cpp ファイルからコンパイルされた 1 つの .os オブジェクトが含まれています。2 番目のセットには、ラップされるインターフェイスを構成する個々のファイルのすべての .so ファイルが含まれています。
$g++ -shared *.os -o Mathlibmodule.so
ld: duplicate symbol std::vector<int, std::allocator<int> >::size() constin Mathlib_wrap.o and Capsule.o
swig c++ ラッパー (Mathlib_wrap.o のソース ファイル) は機械で生成されたもので、見た目が悪く、追跡がさらに困難になるように多くの #define が含まれています。2 番目のセットのすべてのオブジェクト ファイルに再定義が存在するようです。これらすべてのファイルに含まれるヘッダーをたどったところ、#pragma once'd のようです。
問題がどこにあるのかを追跡するために、人々はどのようなアドバイスを持っていますか?