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

所以我包括了所有的库,因为我不知道哪个类在哪个库中。这可以很好地编译和链接,我可以看到代码通过“到目前为止一切正常!”但是只有在程序退出之后,我才有一个“分割错误”。你知道吗?
附笔。
1-我使用opensuse13.1和yast从存储库安装opencascade库。
2—I还删除了C样式的包含和“Prtff”语句,以获得纯C++代码,但仍然存在相同的问题。我还使用了std名称空间。
3-我运行valgrind,它检测到segfault发生在一个tcl read函数上,这个函数深深地嵌入到opencascade库中!如果这是真的,那么整个opencascade库都会受到mem leak的质疑。是真的吗?

最佳答案

我不知道。或许可以试试C代替?

关于c++ - OpenCascade中的奇怪段错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24794938/

10-13 03:21