Я пытаюсь запустить следующую простую программу, которая использует некоторые классы из библиотеки 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- Я также удалил операторы #include и «printf» в стиле C, чтобы иметь чистый код C ++, но все еще имею ту же проблему. Я также использовал пространство имен std.
3. Я запускаю Valgrind, и он обнаруживает, что segfault происходит при функции чтения Tcl, которая глубоко встроена в библиотеку OpenCascade! Если это правда, вся библиотека OpenCascade находится под вопросом с утечкой памяти. Это правда?
Я не знаю. Может быть, попробуйте вместо C #?