C++封装CGAL的StraightSkeleton为dll,供C#调用

目录

一、问题:

二、搭建CGAL环境:

官方指南:

其它参考:

三、验证CGAL环境:

3.1、CMake编译CGAL的examples->Triangulation_2

3.2、CMake编译CGAL的examples->Straight_skeleton_2

3.3、创建一个C++项目,使用CGAL

3.4、创建一个C++项目,运行GitHub项目中的C++代码

四、C++封装CGAL的StraightSkeleton为dll:

4.1、创建一个“动态链接库(DLL)”的C++项目,项目属性:

4.2、C++代码:

4.3、生成dll:

五、C#调用dll:

5.1、创建一个“控制台应用(.NET Framework)”的C#项目,项目属性:

5.2、C#代码:

5.3、生成exe,并调用dll:

六、其它参考文档:


一、问题:

        在GitHub中找到一个项目,用C++对CGAL的StraightSkeleton进行封装,生成dll;然后,C#调用dll。但是,这个项目太老,是用VS2013生成的32位的dll,我需要用VS2019生成64位的dll。

GitHub - martindevans/CGAL_StraightSkeleton_Wrapper: C# Wrapper for calculating straight edge skeleton in C# using CGAL

二、搭建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++代码。

CGAL_StraightSkeleton_Wrapper/CGAL_StraightSkeleton_Wrapper at master · martindevans/CGAL_StraightSkeleton_Wrapper · GitHub

        项目属性:同【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项目。

CGAL_StraightSkeleton_Wrapper/CGAL_StraightSkeleton_Wrapper at master · martindevans/CGAL_StraightSkeleton_Wrapper · GitHub

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项目。

CGAL_StraightSkeleton_Wrapper/CGAL_StraightSkeleton_Dotnet at master · martindevans/CGAL_StraightSkeleton_Wrapper · GitHub

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里布尔操作

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值