许可优化
许可优化
产品
产品
解决方案
解决方案
服务支持
服务支持
关于
关于
软件库
当前位置:服务支持 >  软件文章 >  NX二次开发:进入CAM模块失败的原因及解决

NX二次开发:进入CAM模块失败的原因及解决

阅读数 3
点赞 0
article_banner

开发环境:VS2015 Professional + NX12.0.2.9

场景描述:

NX  解决方案下,我添加了两个公共库,一个是Common,一个是 Cam  ,输出类型均为dll

然后我在使用开发包功能A时,ufusr入口添加了模块检查:

UF_initialize();if (!LCCAM::IsInCAM()){     LCC::MessageBox(true, "请进入CAM环境!");     UF_terminate();     return; }

 IsInCAM()代码在Cam库中,代码如下:        

bool LCCAM::IsInCAM(){    int module = UF_APP_NONE;    UF_ask_application_module(&module);     return (module == UF_APP_CAM);}

这时会提示报错 信息 ,请进入CAM环境。

然后我手动进入CAM模块,就会报错:

(1)VS编译器环境调试方式:

(2)使用NX编译后的 安装包  方式:

注意:重新生成解决方案后,Debug/Release均报错。

          DLL卸载方式为:Session::LibraryUnloadOptionImmediately


报错prt条件:

(1)prt为新建prt,保存,关闭重新打开。如果prt新建没有关闭则不会报错

(2)测试prt并不在CAM模块下,且没有手动切入到CAM模块

原因分析:

有一个很奇怪的现象,解决方案中有很多项目,

如果项目ufusr入口处添加了LCCAM::IsInCAM(),进入CAM模块一定会失败!

如果项目ufusr入口处没有添加LCCAM::IsInCAM(),进入CAM模块也可能会失败,绝大多数失败!

我开始以为是Cam库有问题,然而发现有一个项目只使用了Common库,进入CAM模块也会失败..................

这就很奇怪了!为什么只使用了Common库也会有问题呢,我决定从Common库这一点入手。

因为这个Common库是从另外一个解决方案LS那里摘过来并加以补充的,我决定用LS测试一下,

测试发现LS居然可以进入CAM模块!

那就肯定是Common库新增代码的问题了,最终发现:

如果不添加CAM模块的uf函数,那么就是成功的,CAM模块的NXOpen函数不会报错。

但是没道理啊,别的解决方案也用了cam的uf函数,为什么没有报错呢?

为此我去查找其他的解决方案,很可惜没有找到NX12的,但却找到一个NX10的解决方案,发现公共库里是有uf的,

我测试了一下,他们的功能可以切入到CAM模块,这是为什么呢?

然后我发现,他们输出的是lib,然后我就把Common库改为lib(记得把代码中DLL_EXPORT等关键字删除),测试通过。

难道输出lib就可以了吗?此时的我开心的以为找到了答案。

于是我把Cam库也改成了lib,事实证明我还是太年轻了,Cam库还是报错。

试了很多方法,都没有找到Cam库失败的原因。退一步讲,即使Cam库成功了,那为什么输出dll就不行呢?

这个问题留在这里,找到原因后会更贴。知道答案的朋友也请讲解一下,多谢!

如何解决:

虽然不知道原因是什么,就暂认为NX对于CAM模块支持不好吧,其他模块是没有这个问题的,目前有两个方法可以避免:

(1)通过标签的显示,即仅在CAM模块下显示该标签

(2)卸载时使用Session::LibraryUnloadOptionAtTermination

extern "C" DllExport int ufusr_ask_unload(){    //return (int)Session::LibraryUnloadOptionExplicitly;    return (int)Session::LibraryUnloadOptionImmediately;    //return (int)Session::LibraryUnloadOptionAtTermination; //使用Termination不会报错}


免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

相关文章
技术文档
QR Code
微信扫一扫,欢迎咨询~
customer

online

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 board-phone 155-2731-8020
close1
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

姓名不为空

姓名不为空
手机不正确

手机不正确

手机不正确
公司不为空

公司不为空

公司不为空