OpenCascade中的奇怪分段错误

时间:2014-07-17 04:33:12

标签: c++ linux opensuse opencascade

我正在尝试运行以下简单程序,该程序使用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*

所以我包含了所有库,因为我完全不知道哪个类在哪个库中。这编译和链接很好,我可以看到代码贯穿“到目前为止OK!”。但是,只有在程序退出后,我才会出现“分段错误”。你有什么想法吗?

P.S。 1-我使用OpenSUSE13.1和Yast从存储库安装OpenCascade库。 2-我还删除了C风格的#include和“printf”语句以获得纯C ++代码,但仍然存在同样的问题。我还使用了std命名空间。 3-我运行Valgrind,它检测到段错误发生在一个Tcl读取函数,这是OpenCascade库的内部!如果这是真的,整个OpenCascade lib都会遇到mem leak问题。真的吗?

1 个答案:

答案 0 :(得分:-3)

我不知道。也许尝试c#而不是?