栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

基于swig生成c#版opencascade接口

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

基于swig生成c#版opencascade接口

1、准备occ源码,官网下载、解压并编译

如果最终csharp要在多平台中运行,则这里要编译多个版本的原生二进制程序,譬如windows系统下的

2、准备i文件,可以在occ官网购买,也可以自己定义

注意:

occsharp.i中的模块名称,为csharp侧导入c++dll的模块名称,可以按照自己的逻辑修改

3、下载swig工具和tclsh工具 注意:

本套i文件需要下载swig3.0.12,swig4与之不兼容

4、编写批处理文件makewrapper.bat
  • 设置occ编译成果路径、swig路径和tclsh路径
  • 设置swig选项
  • 调用swig命令,生成c++导出文件和csharp导入文件
rem 设置occ编译成果路径、swig路径和tclsh路径
set TCLSH=C:ActiveTclbintclsh.exe
set SWIG=D:Toolsswigwin-3.0.12swig.exe
set BUILD_TYPE=Debug
set CASROOT=D:Sdksopencascade-7.6.0
set CSF_OCCTBinPath=D:Sdksopencascade-7.6.0win64vc14bind
set CSF_OCCTLibPath=D:Sdksopencascade-7.6.0win64vc14libd
set CSF_OCCTIncludePath=D:Sdksopencascade-7.6.0inc

rem 设置swig选项
set "SWIG_OPTIONS= -c++ -Wextra -w309 -csharp -fcompact -fvirtual -DSWIG2_CSHARP -D_WIN32"

rem 调用swig命令,生成c++导出文件和csharp导入文件
"%SWIG%" %SWIG_OPTIONS% "-I%~dp0swig" "-I%aWrapperRoot%" "-I%CSF_OCCTIncludePath%" -outdir "%~dp0wrappers" "%~dp0swig/occcsharp.i"
5、运行批处理文件,生成c++导出文件和csharp导入文件

生成的c++文件在swig文件夹下,文件如下:

生成的csharp文件在wrapers文件夹下,文件如下:

注意:

在生成文件过程中,如果报错,是因为该套i文件和swig版本不支持模板嵌套。故需要对occ文件和生成cs文件做修改。

  • 更改BVH_Box.hxx

    • 原因是Swig不能处理嵌套的template,且暂时BVH_BaseBox仅有BVH_Box一个实现,无需内层模板
  • 更改NCollection_CellFilter.hxx

    • 将Inspector::IsEqual改为IsEqual即不调用模板中的IsEqual函数,而调用当前类中的IsEqual函数
    • 原因是Swig封装后,实例化模板时无法找到IsEqual的实现
6、建立测试项目,并基于生成的c# 和c++文件,生成c# dll 和c++ dll

occwrapcsharp项目为c++dll项目,添加生成cxx和h文件
csharp项目为c#dll项目,添加生成的cs文件,修改头文件库文件包含路径和依赖occ lib
test项目为c#dll项目,添加依赖,依赖csharp项目

注意:

c++的dll名称要与occsharp.i中的模块名称保持一致,参考2条的注意事项

7、编译测试项目 注意:

如果有编译错误,大概率还是模板嵌套的问题,将生成的cs文件中的嵌套模板做修改,直接删除模板参数

8、运行测试项目 注意:

编译通过后,将occ dll拷贝到项目路径下,否则会提示找不到依赖的dll

9、c# 和c++ 混合调试 注意:

如果要实现c# 和c++ 混合调试,有两点注意事项:

1. 使用vs,不要用rider;rider似乎还不支持混合调试
2. c#的相关项目要打开支持native调试开关,具体方法右键项目,然后如下图

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/982346.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号