UG/NX 二次开发(C#) C#调用C++ 非托管dll的实现

本文为博客 VIP 文章,开通 VIP 后可阅读全文

开通 VIP

      出于知识产权的考虑,项目要求dll加密,但是C#是基于IL 中间语言和 .NET Framework CLR 运行的。如果不做加密,就像穿着皇帝的新衣,没有丝毫隐私可言,然后市面上各种加密软件参差不齐,安全性无法考量。

鉴于此,通过C#调用C++无托管dll的需求,就能很好的从根本上解决问题,这里先科普一下托管dll和非托管dll:

托管DLL,说白了,就是 完全由.NET托管代码实现的DLL,完全依赖于 .NET 平台的 CLR 运行。托管DLL,受.NET CLR管控,支持内存自动回收等的,对于.NET平台是安全DLL

非托管DLL,是指完全或者部分 不是用.NET代码实现,不依赖于.NET平台即可运行,例如 COM方式 的DLL,不支持自动回收内存,对于.NET平台而言,也是非安全可控的。

再通俗一点讲:

托管DLL:反编译出来是公共语言运行库识别的代码,可读性高

非托管DLL:反编译出来是汇编语言,可读性低

这里,就UG二开开发(C#)这个业务来介绍C#调用C++非托管dll的实现:

1、首先解决C++非托管动态链接库的问题,需要VS版本2017以上,因为低版本VS创建的DLL都是32位,调用的时候会报错。

 这里我安装了VS2022版本,新建一个C++的空项目:

</

UG/NX二次开发Siemens官方NXOPEN实例解析—2.9 InteropCallCFromDotNet(VB调用VC++ DLL实践) 随着工业智能化的不断发展,UG二次开发的需求越来越多,也吸引了大批的二开从业人员,本人作为一名资深IT从业者(10年+)也毅然加入二次开发大军。然而,和流行IT行业(互联网、金融、医疗等)相比,工业智能化的门槛显得更高一点,专业的工业软件,相对封闭的开发理念和更小的开发圈子,让刚进入二开的从业者有点举步维艰。边学边整理,希望通过这系列文章的整理能给二开的生态增添一叶绿。一、知识点提取本实例实现了通过VB调用VC++dll的方法,主要知识点如下:1、VC++程序申明可以被VB调用的外部方法。 阅读详情

相关推荐

NX二次开发(C#)-搭建自定义库(NXOpenLC)-一步一个脚印

从事NX二次开发已经块两年了,由C++到CSharp,从NX6.0到NX1926。在二次开发过程中,积累了一些经验,也封装了部分库。这些库都是在做项目中经常用到的,从今天开始抽时间把这些库重新梳理出来,以便于快速调用。 目前,由于项目的需求还是以NX10和NX1899为主,所以搭建的自定义库采用NX10。 每天都坚持一点,把一些常有的或者在开发过程中遇到的棘手问题,在网上不易查到的,我也及时发出来,也对NX二次开发者有点帮助吧。 加油!!! ...

GimiGimmy 2111

NX/UG二次开发—其他—NXC++调用C#工具并传参

门前大桥下,游过一群鸭,快来看一看,原来是C++ 2386

NX二次开发(C#)专栏目录

C#语言做NX二次开发专栏目录

阿飞2018 1625

UG NX C#.NET 二次开发步骤

1、在UG NX中使用BlockUI styler 生成对话框的dlx 和相应的cs文件(注意对话框属性中的代码生成页中的语言应选择C#); 2、在VS中建立C#类库项目(此时选择的.NET框架应合适,可见下述第6条),名称与dlx 相同,删除其中自动生成的类,并将上一步生成的cs文件的对话框类导入; 3、在VS中添加对NXOpen.dllNXOpen.UF.dllNXOpen.Utilities.dllNXOpenUI.dll几个库的引用; 4、找到对话框类源代码中的构造函数,并将theDia

hohoyu的专栏 3920

C#UG二次开发环境配置、调试和开发教程

一、UG的宏录制 1、选择宏录制的语言C# 1.1 打开NX新建一个模型 1.2 打开文件->首选项->用户界面,设置录制语言为C# 1.3 打开开发人员,点录制即可进行录制 1.4 将录制的程序保存到桌面或者其他位置方便找到,下面是我录制的程序 1.5对于程序中的语句,可以查看帮助文件 帮助文件传送门 二、VS2017内C#开发环境配置 1.新建C#项目 2. 放入录制的宏文件 将第一步录制宏C#文件放入新建的项目中,将原来的Program文件删除。 3、添加NXOpen库 1.

whb1815的博客 8800

NX/UG二次开发-其他-打包对话框\图标到DLL

在很多外挂的安装包中,并没有对话框和图标文件。好处就是文件少,也防止用户修改对话框中的属性,导致程序异常。3、添加资源文件(如果代码包可能随时发给别人或更换文件夹,建议将资源文件设为相对路径)4、解析对话框位置,删除对话框,(只有对话框显示之后,就可以删除掉对话框)2、新建自定义资源类型。

门前大桥下,游过一群鸭,快来看一看,原来是C++ 2554

UG 二次开发- UG内部调用DLL

dos命令行输入下边两行命令,将会在e盘111.txt中写入“\NX 12.0\UGOPEN”所有lib文件名称。【2】添加UG头文件目录,属性页->C/C++->常规->附加包含目录。【3】添加UG库所在目录,属性页->链接器->常规->附加库目录。【4】添加附加依赖项,属性页->链接器->输入->附加依赖项。将项目设置为x64平台(这步很重要,否则程序无法编译成功)【1】用VS新建一个dll工程。【5】添加所有lib作为依赖项。

notfindjob的博客 1288

UG\NX二次开发 获取对象所在图层

获取对象所在图层。

王牌飞行员_里海的博客 1774

C#调用C++的方法

供应商提供的SDK可能就是C++的库,因为效率问题需要在C++中处理数据(C++运行效率更高),在实际的工作中,总有这样的场景出现,那么如何在C#调用C++的接口呢?

Aflashstar的博客 1033

关于如何在C#调用C++DLL,以及如何在C++调用C#DLL

一、关于如何在C#调用C++DLL,以及如何在C++调用C#DLL 注:clr指公共语言运行库 CLR是一门非常恶搞的语言,就好像是在C++里面写C#的文件一样,也就是一种所谓的“托管模式”,把C++的代码丢到.net中去运行。 C#C++形成的DLL有一层天然的屏障,并不能简单地互相调用,想要C#工程调用c++dll,需要先在其外部包裹上clr c++的外壳。 公共语音运行库提供了一...

Andius的博客 233

UG NX二次开发C#)-建模-根据特征获取体(或者关联体)

UG NX的建模是基于特征建模的,比如块、圆柱体、合并操作等等都是特征,都有特征对象,对于具有体的特征,其可以通过NXOpen二次开发技术实现二者的转换,也可以通过UFun函数来实现,有时根据特征直接获取体对象,有时不行,但是可以通过关联对象查找。我们今天讲一下采用NXOpen来实现特征体对象的查找,包括直接获取体对象和管理对象获取体对象。

GimiGimmy 1304

UG NX二次开发C#)-UIStyler-找不到指定的Dlx文件的错误解决方法

UG NX二次开发过程中,我们为了更好的操作,采用UI Styler设计了软件界面,然后按照UI Styler的编程流程成功的生成了dll,但是在采用Ctrl+U或者用“文件“->“执行”->"NX Open"执行dll时,遇到如下图所示的错误页面,提示内容为:找不到指定的Dlx文件。

GimiGimmy 2244

NX二次开发】设置了“附加包含目录”,还是提示“无法打开包括文件”的解决方法...

项目属性中的“附加包含目录”路径完全正确,但是还是无法找到头文件: 这个问题我遇到过不止一次,纠结了很久,终于发现了解决方法: 改为: 问题解决! 分析原因:项目中的属性配置 与 编译平台不一致! 主要原因是对Visual Studio不熟悉。 ...

王牌飞行员_里海的博客 705

NX/UG二次开发——问题与方法

1. uf函数失效 没有初始化ufun函数 2. 调用另一个对话 框 有一些UF函数在对话框cpp中无效,只能在无对话框的dll中使用。所以在class A中调用dialog class B。具体可见PLM的教程35,需要注意的是,A需要调用B中的值,该值不能初始化!只能在ok_cb...

chuohualve7358的博客 1965

UG/NX二次开发:调取其他模块dll

aagadgdg的博客 1003

UG NX二次开发(C#)-CAM-加工模板、程序、方法、刀具和几何体的读取

UG NX读取加工的信息

GimiGimmy 5024

UG二次开发如何调试

总结了如何在VS开发环境下采用C#语言对UG进行二次开发时,进行调试的方法,希望对需要的朋友有所帮助。

qq_29794385的博客 2783

UG NX 次开发 - 外部模式 C#: 用 C# 进行 UG NX二次开发

C# 项目中,需要引用 UG NX 的程序集,以便能够访问 UG NX 的对象和函数。在"引用管理器"对话框中,选择"浏览"选项卡,并浏览到 UG NX 安装目录下的 “NXBIN” 文件夹,选择"NXOpen.dll" 和 “NXOpen.Utilities.dll” 等程序集进行引用。我们了解了如何设置开发环境并引用 UG NX 的程序集,然后通过编写代码示例演示了如何在 UG NX 中创建一个新的零件文件并添加一个圆柱体。在某些情况下,用户可能需要对 UG NX 进行二次开发,以满足特定的需求。

HackQuestR的博客 1557
上一篇: UG/NX 二次开发(C#) 自动刻字三部曲3-布尔求差
下一篇: UG/NX 二次开发(C#) 特征与体的区别与关联
MarcoPro
博客等级 码龄4年 415粉丝 · 144原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MarcoPro

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值