Mac OS X (10.8.4) に CGAL をインストールしています。CGAL の側面を以前の C++ プログラムに組み込むことに成功し、3D 点群の凸包を計算しました。ただし、現在、サーフェス メッシュの計算、多面体への変換などのために CGAL の他の部分を含めようとしています。これを行うと、プログラムは正常にコンパイルされますが、理解できないリンク エラーが表示されます。
コンパイル後の私のリンクコマンドは次のとおりです。
c++ -O2 -I/usr/local/include -I/usr/include -I/opt/local/include -o /Users/bullard/ShapeMetrology/Particle/bin/diffgeom diffgeom.a -L/usr/local/lib -L/usr/lib -L/opt/local/lib -lboost_math_c99 -lm -lCGAL -lCGAL_Core -lCGAL_ImageIO -lgmp
そして、ここに私が受け取っている(かなり冗長な)リンクエラーがあります:
アーキテクチャ x86_64 の未定義シンボル: "boost::detail::get_tss_data(void const*)"、次から参照: CGAL::Lazy、CGAL::Gmpq、CGAL::Lazy_exact_nt、CGAL::To_interval >::zero() in diffgeom.a(Particle.o) boost::thread_specific_ptr, CGAL::Gmpq, CGAL::Lazy_exact_nt, CGAL::To_interval > >::reset(CGAL::Lazy, CGAL::Gmpq, CGAL::Lazy_exact_nt, CGAL: :To_interval >*) in diffgeom.a(Particle.o) CGAL::Lazy > >、CGAL::Point_3 >、CGAL::Gmpq、CGAL::Cartesian_converter、CGAL::Simple_cartesian >、CGAL::NT_converter > > > ::zero() in diffgeom.a(Particle.o) boost::thread_specific_ptr > >、CGAL::Point_3 >、CGAL::Gmpq、CGAL::Cartesian_converter、CGAL::Simple_cartesian >、CGAL::NT_converter > > > >::reset(CGAL::Lazy > >, CGAL::Point_3 >, CGAL::Gmpq, CGAL::Cartesian_converter, CGAL::Simple_cartesian >, CGAL::NT_converter > > >*) in diffgeom.a(Particle.o) CGAL::Lazy > >, CGAL::Sphere_3 >, CGAL::Gmpq, CGAL::Cartesian_converter, CGAL ::Simple_cartesian >, CGAL::NT_converter > > >::zero() in diffgeom.a(Particle.o) boost::thread_specific_ptr > >, CGAL::Sphere_3 >, CGAL::Gmpq, CGAL::Cartesian_converter, CGAL ::Simple_cartesian >, CGAL::NT_converter > > > >::reset(CGAL::Lazy > >, CGAL::Sphere_3 >, CGAL::Gmpq, CGAL::Cartesian_converter, CGAL::Simple_cartesian >, CGAL::NT_converter > > >*) in diffgeom.a(Particle.o) "boost::detail::set_tss_data(void const*, boost::shared_ptr, void*, bool)", 参照先: boost::thread_specific_ptr, CGAL:: Gmpq、CGAL::Lazy_exact_nt、CGAL::To_interval > >::reset(CGAL::Lazy, CGAL::Gmpq, CGAL::Lazy_exact_nt, CGAL::To_interval >*) in diffgeom.a(Particle.o) boost::thread_specific_ptr, CGAL::Gmpq, CGAL::Lazy_exact_nt, CGAL: :To_interval > >::~thread_specific_ptr() in diffgeom.a(Particle.o) boost::thread_specific_ptr > >、CGAL::Point_3 >、CGAL::Gmpq、CGAL::Cartesian_converter、CGAL::Simple_cartesian >、CGAL: :NT_converter > > > >::reset(CGAL::Lazy > >, CGAL::Point_3 >, CGAL::Gmpq, CGAL::Cartesian_converter, CGAL::Simple_cartesian >, CGAL::NT_converter > > >*) in diffgeom .a(Particle.o) boost::thread_specific_ptr > >、CGAL::Point_3 >、CGAL::Gmpq、CGAL::Cartesian_converter、CGAL::Simple_cartesian >、CGAL::NT_converter > > > >::~thread_specific_ptr() diffgeom.a(Particle.o) ブースト::thread_specific_ptr > >, CGAL::Sphere_3 >, CGAL::Gmpq, CGAL::Cartesian_converter, CGAL::Simple_cartesian >, CGAL::NT_converter > > > >::reset(CGAL::Lazy > >, CGAL::Sphere_3 > 、CGAL::Gmpq、CGAL::Cartesian_converter、CGAL::Simple_cartesian >、CGAL::NT_converter > > >*) の diffgeom.a(Particle.o) boost::thread_specific_ptr > >、CGAL::Sphere_3 >、CGAL: :Gmpq, CGAL::Cartesian_converter, CGAL::Simple_cartesian >, CGAL::NT_converter > > > >::~thread_specific_ptr() in diffgeom.a(Particle.o) "_mpfr_clear", 参照元: CGAL::cpp11:: result_of > >、CGAL::CartesianKernelFunctors::Compute_squared_radius_3 > > (CGAL::Sphere_3)>::type CGAL::Lazy_construction_nt > >、CGAL::CartesianKernelFunctors::Compute_squared_radius_3 > >::operator() >(CGAL::Sphere_3 const&) diffgeom.a(Particle.o) の const CGAL::Cartesian_converter、CGAL::Simple_cartesian >、CGAL::NT_converter > >::operator()(CGAL::Point_3 > const& ) diffgeom.a(Particle.o) の const CGAL::Cartesian_converter、CGAL::Simple_cartesian >、CGAL::NT_converter > >::operator()(CGAL::Sphere_3 > const&) diffgeom.a(Particle.o) の const ) CGAL::Lazy_rep_1、CGAL::Gmpq、CGAL::CartesianKernelFunctors::Compute_squared_radius_3 > >、CGAL::CartesianKernelFunctors::Compute_squared_radius_3 >、CGAL::To_interval、CGAL::Sphere_3 >::update_exact() const in diffgeom.a (Particle.o) CGAL::cpp11::result_of > >、CGAL::CartesianKernelFunctors::Compute_z_3 > > (CGAL::Point_3)>::type CGAL::Lazy_construction_nt > >、CGAL::CartesianKernelFunctors::Compute_z_3 > >::operator() >(CGAL::Point_3 const&) diffgeom.a(Particle.o) の const CGAL::Lazy_rep_1、CGAL::Gmpq、CGAL::CartesianKernelFunctors::Compute_z_3 > >、CGAL::CartesianKernelFunctors ::Compute_z_3 >, CGAL::To_interval, CGAL::Point_3 >::update_exact() diffgeom.a(Particle.o) の const CGAL::cpp11::result_of > >, CGAL::CartesianKernelFunctors::Compute_y_3 > > ( CGAL::Point_3)>::type CGAL::Lazy_construction_nt > >、CGAL::CartesianKernelFunctors::Compute_y_3 > >::operator() >(CGAL::Point_3 const&) const in diffgeom.a(Particle.o) .. . "_mpfr_get_d"、次から参照: CGAL::cpp11::result_of > >、CGAL::CartesianKernelFunctors::Compute_squared_radius_3 > > (CGAL::Sphere_3)>::type CGAL::Lazy_construction_nt > >、CGAL::CartesianKernelFunctors::Compute_squared_radius_3 > >::operator() >(CGAL::Sphere_3 const&) diffgeom.a(Particle.o) の const CGAL::Cartesian_converter、CGAL::Simple_cartesian >、CGAL::NT_converter > >::operator( )(CGAL::Point_3 > const&) diffgeom.a(Particle.o) の const CGAL::Cartesian_converter、CGAL::Simple_cartesian >、CGAL::NT_converter > >::operator()(CGAL::Sphere_3 > const&) const diffgeom.a(Particle.o) CGAL::Lazy_rep_1、CGAL::Gmpq、CGAL::CartesianKernelFunctors::Compute_squared_radius_3 > >、CGAL::CartesianKernelFunctors::Compute_squared_radius_3 >、CGAL::To_interval、CGAL::Sphere_3 >:: update_exact() const in diffgeom.a(Particle.o) CGAL::cpp11::result_of > >、CGAL::CartesianKernelFunctors::Compute_z_3 > > (CGAL::Point_3)>::type CGAL::Lazy_construction_nt > >、CGAL::CartesianKernelFunctors::Compute_z_3 > >::operator() >(CGAL::Point_3 const&) diffgeom.a(Particle.o) の const CGAL::Lazy_rep_1、CGAL::Gmpq、CGAL::CartesianKernelFunctors ::Compute_z_3 > >, CGAL::CartesianKernelFunctors::Compute_z_3 >, CGAL::To_interval, CGAL::Point_3 >::update_exact() diffgeom.a(Particle.o) の const CGAL::cpp11::result_of > >, CGAL::CartesianKernelFunctors::Compute_y_3 > > (CGAL::Point_3)>::type CGAL::Lazy_construction_nt > >、CGAL::CartesianKernelFunctors::Compute_y_3 > >::operator() >(CGAL::Point_3 const&) const in diffgeom.a(Particle.o) ... "_mpfr_init2"、次から参照: CGAL::cpp11::result_of > >、CGAL::CartesianKernelFunctors::Compute_squared_radius_3 > > (CGAL::Sphere_3)>::type CGAL::Lazy_construction_nt > >, CGAL::CartesianKernelFunctors::Compute_squared_radius_3 > >::operator() >(CGAL::Sphere_3 const&) const in diffgeom.a(Particle.o) CGAL::Cartesian_converter, CGAL:: Simple_cartesian >, CGAL::NT_converter > >::operator()(CGAL::Point_3 > const&) const in diffgeom.a(Particle.o) CGAL::Cartesian_converter, CGAL::Simple_cartesian >, CGAL::NT_converter > >: :operator()(CGAL::Sphere_3 > const&) const in diffgeom.a(Particle.o) CGAL::Lazy_rep_1、CGAL::Gmpq、CGAL::CartesianKernelFunctors::Compute_squared_radius_3 > >、CGAL::CartesianKernelFunctors::Compute_squared_radius_3 > 、CGAL::To_interval、CGAL::Sphere_3 >::update_exact() diffgeom.a(Particle.o) の const CGAL::cpp11::result_of > >、CGAL::CartesianKernelFunctors::Compute_z_3 > > (CGAL::Point_3)>::type CGAL::Lazy_construction_nt > >、CGAL::CartesianKernelFunctors::Compute_z_3 > >::operator() >(CGAL::Point_3 const&) const in diffgeom.a(Particle. o) CGAL::Lazy_rep_1、CGAL::Gmpq、CGAL::CartesianKernelFunctors::Compute_z_3 > >、CGAL::CartesianKernelFunctors::Compute_z_3 >、CGAL::To_interval、CGAL::Point_3 >::update_exact() const in diffgeom. a(Particle.o) CGAL::cpp11::result_of > >、CGAL::CartesianKernelFunctors::Compute_y_3 > > (CGAL::Point_3)>::type CGAL::Lazy_construction_nt > >、CGAL::CartesianKernelFunctors::Compute_y_3 > >::operator() >(CGAL::Point_3 const&) const in diffgeom.a(Particle.o) ... "_mpfr_set_q"、次から参照: CGAL::cpp11::result_of > >、CGAL::CartesianKernelFunctors::Compute_squared_radius_3 > > (CGAL::Sphere_3)>::type CGAL::Lazy_construction_nt > >、CGAL::CartesianKernelFunctors::Compute_squared_radius_3 > >::operator() >(CGAL::Sphere_3 const&) const in diffgeom.a(Particle. o) CGAL::Cartesian_converter、CGAL::Simple_cartesian >、CGAL::NT_converter > >::operator()(CGAL::Point_3 > const&) const in diffgeom.a(Particle.o) CGAL::Cartesian_converter、CGAL:: Simple_cartesian >, CGAL::NT_converter > >::operator()(CGAL::Sphere_3 > const&) diffgeom.a(Particle.o) の const CGAL::Lazy_rep_1, CGAL::Gmpq, CGAL::CartesianKernelFunctors::Compute_squared_radius_3 > >, CGAL::CartesianKernelFunctors::Compute_squared_radius_3 >, CGAL::To_interval, CGAL::Sphere_3 >::update_exact() diffgeom.a(Particle.o) の const CGAL::cpp11::result_of > >, CGAL::CartesianKernelFunctors::Compute_z_3 > > (CGAL::Point_3)>::type CGAL::Lazy_construction_nt > >, CGAL::CartesianKernelFunctors::Compute_z_3 > >::operator() >(CGAL::Point_3 const&) diffgeom.a(Particle.o) の const CGAL::Lazy_rep_1、CGAL::Gmpq、CGAL::CartesianKernelFunctors::Compute_z_3 > >、CGAL::CartesianKernelFunctors::Compute_z_3 >、CGAL::To_interval、CGAL::Point_3 >::update_exact() diffgeom.a(Particle.o) の const CGAL::cpp11::result_of > >、CGAL::CartesianKernelFunctors::Compute_y_3 > > (CGAL::Point_3)>::type CGAL::Lazy_construction_nt > >、CGAL::CartesianKernelFunctors::Compute_y_3 > >::operator() >(CGAL::Point_3 const&) const in diffgeom.a(Particle.o) ... ld: アーキテクチャ x86_64 のシンボルが見つかりません。エラー:リンカー コマンドは終了コード 1 で失敗しました (呼び出しを確認するには -v を使用してください)。* [/Users/bullard/ShapeMetrology/Particle/bin/diffgeom] エラー 1
リンク コマンドに CGAL ライブラリがありませんか? 繰り返しますが、凸包を計算するためだけに CGAL を使用していたときは問題ありませんでしたが、サーフェス メッシュを含めようとしている今、この問題が発生しているようです。
コードの関連部分が役立つ場合は喜んで投稿しますが、現時点ではどの部分が関連するかわかりません。