目录
3.1、CMake编译CGAL的examples->Triangulation_2
3.2、CMake编译CGAL的examples->Straight_skeleton_2
3.4、创建一个C++项目,运行GitHub项目中的C++代码
四、C++封装CGAL的StraightSkeleton为dll:
4.1、创建一个“动态链接库(DLL)”的C++项目,项目属性:
5.1、创建一个“控制台应用(.NET Framework)”的C#项目,项目属性:
一、问题:
在GitHub中找到一个项目,用C++对CGAL的StraightSkeleton进行封装,生成dll;然后,C#调用dll。但是,这个项目太老,是用VS2013生成的32位的dll,我需要用VS2019生成64位的dll。
二、搭建CGAL环境:
需要安装Boost、CGAL、GMP/MPFR、QT。前辈们写的文档已经非常详细、完善了,这里就不重复写了。
安装QT的过程中,貌似也可以不安装VS2019的Qt Visual Studio Tools插件。
官方指南:
CGAL 5.5.1 - Manual: Using CGAL on Windows (with Visual C++)
其它参考:
[CGAL] CGAL-5.2.1的安装与编译(Win10+vs2019+CGAL-5.2.1)_飞翔的霸王龙的博客-CSDN博客_cgal安装
[CGAL] CGAL的编译与使用_geodoer的博客-CSDN博客_cgal
VS 2019 安装配置 CGAL,Boost_米先森的博客-CSDN博客_cgal 安装
三、验证CGAL环境:
3.1、CMake编译CGAL的examples->Triangulation_2
参照以下文档,通过CMake编译Triangulation_2_Examples。
[CGAL] CGAL-5.2.1的安装与编译(Win10+vs2019+CGAL-5.2.1)_飞翔的霸王龙的博客-CSDN博客_cgal安装[CGAL] CGAL的编译与使用_geodoer的博客-CSDN博客_cgal
CMake编译后,“Triangulation_2_Examples”解决方案中“draw_triangulation_2”项目的配置。
3.2、CMake编译CGAL的examples->Straight_skeleton_2
CMake编译后,“Straight_skeleton_2_Examples”解决方案中“draw_straight_skeleton_2”项目的配置。
3.3、创建一个C++项目,使用CGAL
参照以下文档,创建一个C++项目,使用CGAL。
尝试用大一统的计算几何库CGAL解决BIM的算法问题(一)_bigzhangx的博客-CSDN博客_cgal计算几何
项目属性:
C++代码:
3.4、创建一个C++项目,运行GitHub项目中的C++代码
参照以下文档,创建一个C++项目,使用GitHub项目中的C++代码。
项目属性:同【3.3】。
C++代码:将“CGAL_StraightSkeleton_Wrapper.cpp”文件的内容,拷贝到“TestCGAL.cpp”文件中,并增加main函数,来调用CGAL。
int main() {
Poly * outer = new Poly();
outer->verticesCount = 8;
outer->vertices = new float[8];
outer->vertices[0] = 0;
outer->vertices[1] = 0;
outer->vertices[2] = 10;
outer->vertices[3] = 0;
outer->vertices[4] = 10;
outer->vertices[5] = 20;
outer->vertices[6] = 0;
outer->vertices[7] = 20;
Poly * holes = new Poly[0];
int holesCount = 0;
Poly * outStraightSkeleton = new Poly();
Poly * outSpokes = new Poly();
GenerateStraightSkeleton(outer, holes, holesCount, outStraightSkeleton, outSpokes);
return 0;
}
四、C++封装CGAL的StraightSkeleton为dll:
使用GitHub项目中的CGAL_StraightSkeleton_Wrapper项目。
4.1、创建一个“动态链接库(DLL)”的C++项目,项目属性:
4.2、C++代码:
将“CGAL_StraightSkeleton_Wrapper.cpp”文件拷贝到“源文件”目录下,将红框中的代码进行修改。
4.3、生成dll:
对“CGAL_StraightSkeleton_Wrapper”项目生成“CGAL_StraightSkeleton_Wrapper.dll”。
4.4、也可以通过main函数测试exe:
“配置类型”选“应用程序(.exe)”,而非“动态库(.dll)”:
“子系统”选“控制台”,而非“窗口”:
五、C#调用dll:
使用GitHub项目中的CGAL_StraightSkeleton_Dotnet项目。
5.1、创建一个“控制台应用(.NET Framework)”的C#项目,项目属性:
5.2、C#代码:
将“StraightSkeleton.cs”、“Vertex.cs”、“Edge.cs”文件拷贝到“CGAL_StraightSkeleton_Dotnet”项目中。
5.3、生成exe,并调用dll:
对“CGAL_StraightSkeleton_Dotnet”项目生成“CGAL_StraightSkeleton_Dotnet.exe”;将“CGAL_StraightSkeleton_Wrapper.dll”拷贝到“CGAL_StraightSkeleton_Dotnet\bin\x64\Debug”目录下。
六、其它参考文档:
尝试用大一统的计算几何库CGAL解决BIM的算法问题(二)——C#接口实现_bigzhangx的博客-CSDN博客_cgal c#
尝试用大一统的计算几何库CGAL解决BIM的算法问题(三)——图形的布尔运算_bigzhangx的博客-CSDN博客_cgal里布尔操作