我正在尝试运行以下使用 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- 我使用 OpenSUSE13.1 和 Yast 从存储库安装 OpenCascade 库。2-我还删除了 C 风格的#include 和“printf”语句以拥有纯 C++ 代码,但仍然存在同样的问题。我还使用了 std 命名空间。3- 我运行 Valgrind,它检测到在 OpenCascade 库内部的 Tcl 读取函数中发生了段错误!如果这是真的,那么整个 OpenCascade 库都存在内存泄漏问题。真的吗?