Я пытаюсь скомпилировать эту маленькую программу:
// Copyright (c) 2002 Max Planck Institut fuer Informatik (Germany).
// All rights reserved.
//
// This file is part of CGAL (www.cgal.org).
// You can redistribute it and/or modify it under the terms of the GNU
// General Public License as published by the Free Software Foundation,
// either version 3 of the License, or (at your option) any later version.
//
// Licensees holding a valid commercial license may use this file in
// accordance with the commercial license agreement provided with the software.
//
// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
//
// $URL$
// $Id$
//
//
// Author(s) : Lutz Kettner
#include <CGAL/basic.h>
#ifdef _MSC_VER
#include <iostream>
int main() {
std::cout << "Geomview doesn't work on Windows, so no demo." << std::endl;
return 0;
}
#else // can have Geomeview
#include <CGAL/MP_Float.h>
#include <CGAL/Quotient.h>
#include <CGAL/Cartesian.h>
#include <CGAL/Polyhedron_3.h>
#include <CGAL/IO/Polyhedron_geomview_ostream.h>
#include <CGAL/leda_real.h>typedef CGAL::Quotient<CGAL::MP_Float> NT;
typedef CGAL::Cartesian<NT> Kernel;
typedef Kernel::Point_3 Point;
typedef CGAL::Polyhedron_3<Kernel> Polyhedron;
int main() {
NT i = NT(1.0);
NT j = NT(-1.0);
Point p( i, i, i);
Point q( i, j, j);
Point r( j, i, j);
Point s( j, j, i);
Polyhedron P;
Point t( j, j, j);
Point u( j, i, i);
Point v( i, j, i);
Point w( i, i, j);
Polyhedron Q;
P.make_tetrahedron(p,q,r,s);
Q.make_tetrahedron(t,u,v,w);
Point a( (p.x()+q.x())/NT(2) , (p.y()+q.y())/NT(2) , (p.z()+q.z())/NT(2));
Point b( (t.x()+u.x())/NT(2) , (t.y()+u.y())/NT(2) , (t.z()+u.z())/NT(2));
Polyhedron P1, P2, Q1, Q2;
P1.make_tetrahedron(a,q,r,s);
P2.make_tetrahedron(p,a,r,s);
Q1.make_tetrahedron(b,u,v,w);
Q2.make_tetrahedron(t,b,v,w);CGAL::Geomview_stream geo;
geo << CGAL::RED << P;
geo << CGAL::BLUE << Q;
geo << CGAL::Color(200,0,50) << P1;
geo << CGAL::Color(200,50,0) << P2;
geo << CGAL::Color(0,50,200) << Q1;
geo << CGAL::Color(50,0,200) << Q2;
Point click;
geo >> click;
return 0;
}
#endif
Я установил CGAL в своей домашней папке и связал его в cmake-gui.
Я также скомпилировал свой CGAL, связав его с моим LEDA в cmake-gui. Это также в моей домашней папке.
Если я уберу строку ‘include leda_real.h’, программа будет работать отлично. Однако при включении я получаю следующую ошибку:
Linking CXX executable TetraCut
/home/turtle/LEDA/libleda.so: undefined reference to `XReparentWindow'
/home/turtle/LEDA/libleda.so: undefined reference to `XQueryColors'
/home/turtle/LEDA/libleda.so: undefined reference to `XScreenOfDisplay'
/home/turtle/LEDA/libleda.so: undefined reference to `XGetImage'
/home/turtle/LEDA/libleda.so: undefined reference to `XTextWidth'
/home/turtle/LEDA/libleda.so: undefined reference to `XSetWindowBackgroundPixmap'
/home/turtle/LEDA/libleda.so: undefined reference to `XServerVendor'
/home/turtle/LEDA/libleda.so: undefined reference to `XCreatePixmapFromBitmapData'
/home/turtle/LEDA/libleda.so: undefined reference to `XFreeFont'
/home/turtle/LEDA/libleda.so: undefined reference to `XStoreName'
/home/turtle/LEDA/libleda.so: undefined reference to `XCreatePixmap'
/home/turtle/LEDA/libleda.so: undefined reference to `XCreateSimpleWindow'
/home/turtle/LEDA/libleda.so: undefined reference to `XSetErrorHandler'
/home/turtle/LEDA/libleda.so: undefined reference to `XUndefineCursor'
/home/turtle/LEDA/libleda.so: undefined reference to `XGrabPointer'
/home/turtle/LEDA/libleda.so: undefined reference to `XQueryTree'
/home/turtle/LEDA/libleda.so: undefined reference to `XDrawImageString'
/home/turtle/LEDA/libleda.so: undefined reference to `XCopyArea'
/home/turtle/LEDA/libleda.so: undefined reference to `XIconifyWindow'
/home/turtle/LEDA/libleda.so: undefined reference to `XDrawLines'
/home/turtle/LEDA/libleda.so: undefined reference to `XSetWindowBorder'
/home/turtle/LEDA/libleda.so: undefined reference to `XCreateGC'
/home/turtle/LEDA/libleda.so: undefined reference to `XFillRectangle'
/home/turtle/LEDA/libleda.so: undefined reference to `XSetWMProtocols'
/home/turtle/LEDA/libleda.so: undefined reference to `XCreateFontCursor'
/home/turtle/LEDA/libleda.so: undefined reference to `XFreeGC'
/home/turtle/LEDA/libleda.so: undefined reference to `XSelectInput'
/home/turtle/LEDA/libleda.so: undefined reference to `XSetClipMask'
/home/turtle/LEDA/libleda.so: undefined reference to `XChangeGC'
/home/turtle/LEDA/libleda.so: undefined reference to `XCheckWindowEvent'
/home/turtle/LEDA/libleda.so: undefined reference to `XDrawRectangle'
/home/turtle/LEDA/libleda.so: undefined reference to `XSetNormalHints'
/home/turtle/LEDA/libleda.so: undefined reference to `XInternAtom'
/home/turtle/LEDA/libleda.so: undefined reference to `XParseColor'
/home/turtle/LEDA/libleda.so: undefined reference to `XDrawArc'
/home/turtle/LEDA/libleda.so: undefined reference to `XSetInputFocus'
/home/turtle/LEDA/libleda.so: undefined reference to `XDrawPoint'
/home/turtle/LEDA/libleda.so: undefined reference to `XAllocColor'
/home/turtle/LEDA/libleda.so: undefined reference to `XDrawPoints'
/home/turtle/LEDA/libleda.so: undefined reference to `XVendorRelease'
/home/turtle/LEDA/libleda.so: undefined reference to `XSetClipOrigin'
/home/turtle/LEDA/libleda.so: undefined reference to `XSetIconName'
/home/turtle/LEDA/libleda.so: undefined reference to `XLookupString'
/home/turtle/LEDA/libleda.so: undefined reference to `XMoveResizeWindow'
/home/turtle/LEDA/libleda.so: undefined reference to `XPending'
/home/turtle/LEDA/libleda.so: undefined reference to `XUngrabPointer'
/home/turtle/LEDA/libleda.so: undefined reference to `XDrawString'
/home/turtle/LEDA/libleda.so: undefined reference to `XPutBackEvent'
/home/turtle/LEDA/libleda.so: undefined reference to `XFreeCursor'
/home/turtle/LEDA/libleda.so: undefined reference to `XConfigureWindow'
/home/turtle/LEDA/libleda.so: undefined reference to `XDrawSegments'
/home/turtle/LEDA/libleda.so: undefined reference to `XMapWindow'
/home/turtle/LEDA/libleda.so: undefined reference to `XRaiseWindow'
/home/turtle/LEDA/libleda.so: undefined reference to `XCreateBitmapFromData'
/home/turtle/LEDA/libleda.so: undefined reference to `XClearArea'
/home/turtle/LEDA/libleda.so: undefined reference to `XDoesBackingStore'
/home/turtle/LEDA/libleda.so: undefined reference to `XRefreshKeyboardMapping'
/home/turtle/LEDA/libleda.so: undefined reference to `XFree'
/home/turtle/LEDA/libleda.so: undefined reference to `XCopyPlane'
/home/turtle/LEDA/libleda.so: undefined reference to `XCheckMaskEvent'
/home/turtle/LEDA/libleda.so: undefined reference to `XOpenDisplay'
/home/turtle/LEDA/libleda.so: undefined reference to `XSetWMProperties'
/home/turtle/LEDA/libleda.so: undefined reference to `XSetDashes'
/home/turtle/LEDA/libleda.so: undefined reference to `XNextEvent'
/home/turtle/LEDA/libleda.so: undefined reference to `XGetErrorText'
/home/turtle/LEDA/libleda.so: undefined reference to `XResizeWindow'
/home/turtle/LEDA/libleda.so: undefined reference to `XGetGeometry'
/home/turtle/LEDA/libleda.so: undefined reference to `XSetWindowBackground'
/home/turtle/LEDA/libleda.so: undefined reference to `XUnmapWindow'
/home/turtle/LEDA/libleda.so: undefined reference to `XWarpPointer'
/home/turtle/LEDA/libleda.so: undefined reference to `XFlush'
/home/turtle/LEDA/libleda.so: undefined reference to `XCreateWindow'
/home/turtle/LEDA/libleda.so: undefined reference to `XDoesSaveUnders'
/home/turtle/LEDA/libleda.so: undefined reference to `XFillArc'
/home/turtle/LEDA/libleda.so: undefined reference to `XDestroyWindow'
/home/turtle/LEDA/libleda.so: undefined reference to `XRootWindow'
/home/turtle/LEDA/libleda.so: undefined reference to `XDrawLine'
/home/turtle/LEDA/libleda.so: undefined reference to `XChangeWindowAttributes'
/home/turtle/LEDA/libleda.so: undefined reference to `XTranslateCoordinates'
/home/turtle/LEDA/libleda.so: undefined reference to `XMaskEvent'
/home/turtle/LEDA/libleda.so: undefined reference to `XQueryColor'
/home/turtle/LEDA/libleda.so: undefined reference to `XDefineCursor'
/home/turtle/LEDA/libleda.so: undefined reference to `XSetClipRectangles'
/home/turtle/LEDA/libleda.so: undefined reference to `XGetWindowAttributes'
/home/turtle/LEDA/libleda.so: undefined reference to `XFreePixmap'
/home/turtle/LEDA/libleda.so: undefined reference to `XLoadQueryFont'
/home/turtle/LEDA/libleda.so: undefined reference to `XStoreColor'
/home/turtle/LEDA/libleda.so: undefined reference to `XFillPolygon'
/home/turtle/LEDA/libleda.so: undefined reference to `XPutImage'
collect2: error: ld returned 1 exit status
make[2]: *** [TetraCut] Error 1
make[1]: *** [CMakeFiles/TetraCut.dir/all] Error 2
make: *** [all] Error 2
Вот как мой cmake-gui выглядит в обеих программах:
Я установил GMP, MPFR, Boost, libx11-dev, libqt4-dev и многие другие библиотеки, пытаясь заставить это работать, и у меня не получилось.
Пожалуйста. Мне действительно нужно, чтобы это работало. Если вам нужна какая-либо другая информация об этом, я с радостью предоставлю ее, если вам будет сказано, как это сделать
Я не знаю, как действовать дальше, и я потратил много времени на это. Больше, чем я хотел бы признать, учитывая мои скромные результаты. Я обнаружил, что моего первоначального подхода с использованием Quotient будет недостаточно для решения проблемы, так как мне нужно обрабатывать много sqrts. Я просто не могу заставить библиотеку работать.
Заранее благодарим за любую подсказку, которую вы можете предоставить!
Я терпел неудачу.
Я подумал, что мне нужно связать LEDA только с CGAL, но на самом деле мне нужно связать его и с моей программой. Я не понял, как это сделать.
В примерах есть пример того, как это сделать, в файле CmakeLists.txt (с использованием библиотеки CORE). Это основной пример. В CORE также есть действительные числа, называемые Expr.
Я надеюсь, что это поможет любому, кто окажется в этой ловушке. Я сомневаюсь в этом, но все же.
Других решений пока нет …