我正在尝试运行以下简单程序,该程序使用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问题。真的吗?
答案 0 :(得分:-3)
我不知道。也许尝试c#而不是?