我必须与 CGAl 一起做一个项目。如果我使用 Visual Studio 17 运行一个项目(例如 Hello World),我会收到此链接器错误 CGAL Core vc140 mt gd 4.13.1 lib file can not open。 我使用带有 Visual Studio 17 的 Windows 10。 对于 CGAl 和 Boost,我使用 CGAL 4.11 设置,而 boost 我使用 boost 1 65 1 msvc 14.1。 此外,我使用 3.31.0 版本作为 cmake。
这是我的项目
#include <iostream>
#include <CGAL/Simple_cartesian.h>
typedef CGAL::Simple_cartesian<double> Kernel;
typedef Kernel::Point_2 Point_2;
typedef Kernel::Segment_2 Segment_2;
int main()
{
Point_2 p(1, 1), q(10, 10);
std::cout << "p = " << p << std::endl;
std::cout << "q = " << q.x() << " " << q.y() << std::endl;
std::cout << "sqdist(p,q) = "
<< CGAL::squared_distance(p, q) << std::endl;
Segment_2 s(p, q);
Point_2 m(5, 9);
std::cout << "m = " << m << std::endl;
std::cout << "sqdist(Segment_2(p,q), m) = "
<< CGAL::squared_distance(s, m) << std::endl;
std::cout << "p, q, and m ";
switch (CGAL::orientation(p, q, m)) {
case CGAL::COLLINEAR:
std::cout << "are collinear\n";
break;
case CGAL::LEFT_TURN:
std::cout << "make a left turn\n";
break;
case CGAL::RIGHT_TURN:
std::cout << "make a right turn\n";
break;
}
std::cout << " midpoint(p,q) = " << CGAL::midpoint(p, q) << std::endl;
return 0;
}
如果我运行这个,我会收到此链接器错误
LNK1104 file "CGAL_Core-vc140-mt-gd-4.13.1.lib" can not open. Hello_world_CGAL
C:\Users\Besitzer\source\repos\Hello_world_CGAL\Hello_world_CGAL\LINK 1
在编译器的属性中我添加此
C:\local\CGAL-4.11\auxiliary\gmp\include
C:\local\boost_1_65_1
C:\local\boost_1_65_1\build\include
C:\local\CGAL-4.11\include
对于链接器的属性,我使用了这些目录
C:\local\CGAL-4.11\auxiliary\gmp\libs
C:\local\boost_1_65_1\libs
C:\local\boost_1_65_1\lib64-msvc-14.1
C:\local\CGAL-4.11\build\lib
我检查了这个lib文件是否存在,发现了这个文件。我还检查了类似问题的兴趣,但我发现不多。
另一个解决方案可能是升级 CGAL。 现在只是标题。