OpenCascade ライブラリのいくつかのクラスを使用する次の簡単なプログラムを実行しようとしています。
#include <stdio.h>
#include <gp_Pnt.hxx>
#include <Geom_TrimmedCurve.hxx>
#include <GC_MakeArcOfCircle.hxx>
#include <GC_MakeSegment.hxx>
int main(int argc, char *argv[])
{
double myWidth = 1.0, myThickness = 0.5;
// Profile : Define Support Points
gp_Pnt aPnt1(-myWidth / 2., 0, 0);
gp_Pnt aPnt2(-myWidth / 2., -myThickness / 4., 0);
gp_Pnt aPnt3(0, -myThickness / 2., 0);
gp_Pnt aPnt4(myWidth / 2., -myThickness / 4., 0);
gp_Pnt aPnt5(myWidth / 2., 0, 0);
// Profile : Define the Geometry
Handle(Geom_TrimmedCurve) anArcOfCircle = GC_MakeArcOfCircle(aPnt2,aPnt3,aPnt4);
Handle(Geom_TrimmedCurve) aSegment1 = GC_MakeSegment(aPnt1, aPnt2);
Handle(Geom_TrimmedCurve) aSegment2 = GC_MakeSegment(aPnt4, aPnt5);
printf("n So far OK!n");
return 0;
}
以下を使用してコンパイルおよびリンクします。
$> g++ my_sample.cxx -I/usr/include/oce/ /usr/lib/oce/lib*
したがって、どのクラスがどのライブラリにあるのか正確にわからないため、すべてのライブラリを含めます。これは正常にコンパイルおよびリンクされ、コードが "So far OK!" まで実行されることがわかります。しかし、プログラムが終了した後にのみ「セグメンテーション違反」が発生します。何か考えはありますか?
PS 1-YastでOpenSUSE13.1を使用して、リポジトリからOpenCascadeライブラリをインストールします。2- C スタイルの #include と "printf" ステートメントも削除して純粋な C++ コードにしましたが、それでも同じ問題が発生します。std 名前空間も使用しました。3- Valgrind を実行すると、OpenCascade ライブラリの内部にある Tcl 読み取り関数で segfault が発生することが検出されました。それが本当なら、OpenCascade ライブラリ全体がメモリ リークで問題になっています。本当?