2013-05-22 3 views
0

Я хочу использовать Tetgen для вычисления объема заданного набора точек путем тетраэдризации. Я уже видел фрагмент кода, который делает это, и может потребовать некоторой настройки.Ошибка компиляции Tetgen tetcall

Проблема заключается в том, чтобы получить tetcall (тестовая программа для tetgen) для запуска. Если я хочу скомпилировать его (в терминале Linux с помощью g ++ -o test tetcall.cxx -L./ -ltet). Я получаю:

test.cpp: 183: 24: предупреждение: устаревшее преобразование из строковой константы в 'char *' [-Wwrite-stringings] test.cpp: 184: 23: warning: устаревшее преобразование из строковой константы в 'char *' [-Wwrite-strings] test.cpp: 190: 30: error: невозможно преобразовать 'tetgenio :: polygon *' в 'tetgenbehavior *' для аргумента '1' to 'void tetrahedralize (tetgenbehavior *, tetgenio * , tetgenio *, tetgenio *, tetgenio *) ' test.cpp: 193: 26: предупреждение: устаревшее преобразование из строковой константы в' char * '[-Wwrite-stringings] test.cpp: 194: 29: предупреждение: устаревшее преобразование из строковой константы в 'char *' [-Wwrite-strings] test.cpp: 195: 26: предупреждение: устаревшее преобразование из строковой константы в 'char *' [-Wwrite-strings]

В том числе -L./ -ltet в команде или нет, кажется, не имеет значения для ошибки.

Эти предупреждения, я думаю, не являются такой проблемой. То, что я не понимаю ошибку на линии 190 tetcall.cxx вызова функции tetrahedralize:

tetrahedralize("pq1.414a0.1", &in, &out); 

не работает, я ничего не изменилось, и есть все это с сайта [Http: // tetgen.berlios.de/][1] Я скомпилировал библиотеку с некоторыми предупреждениями с $ make tetlib Все файлы (включая libtet.a) находятся на одной карте. функция Я думаю, что компилятор хочет подключиться, и где он может идти на юг, в tetgen.cxx линии 34498

void tetrahedralize(tetgenbehavior *b, tetgenio *in, tetgenio *out, 
    tetgenio *addin, tetgenio *bgmin) 

Я посмотрел на tetgenbehavior класса в заголовке, но я не мог на самом деле цифра что делать из переменной tetgenbehavior * b или как выяснить его тип. Я видел некоторых членов команды, которые, как я думаю, подразумеваются как переключатели. Что я делаю неправильно, и в чем причина ошибки?

ответ

1

Это, вероятно, старый вопрос, и вы, вероятно, поняли это, но вам нужно установить определение препроцессора TETLIBRARY.

1

пытаются использовать эту команду

g++ -o test tetcall.cxx -DTETLIBRARY -L./ -ltet 
Смежные вопросы