使用VC6.0和VS2010做UG的二次开发,生成的dll在本地电脑上运行没有任何问题,复制到另外一台电脑上运行出现了错误,无法加载图像,ufusr报错。排除UG版本问题,排除32位/64位操作系统问题,排除Release和debug问题,项目属性运行库中MT,MTd,MD,MDd也试过,错误一直存在。
折腾了好些天,终于发现原来dll在D版的UG中可以运行,但是想要在正版的UG中运行,必须将dll先”签名",否则就会出现上面的错误!认识好问题等于解决好问题的一半,原来早有人也遇到过相同的问题,借用网络上的解决方案:
1、在代码中加入#include <NXSigningResource.cpp>,重新生成dll。
2、启动NX tools的Dos命令,进入安装目录UGOPEN 下,运行nxsign XXX.dll,XXX.dll需包含全路径,(此处注意了,我用的是NX8.5,nxsign命令输入后提示nxsign不是内部或外部命令,也不是可运行的程序!奇了怪了,进入UGOPEN文件夹下,搜索*.exe,结果中并无nxsign.exe,但出现了signcpp.exe,果断运行 signcpp XXX.dll,成功了!)
解决了如鲠在咽的问题,不吐不快。
解决UG二次开发中DLL无法在正版软件上运行的问题,通过加入特定资源文件并使用nxsign或signcpp命令进行签名。

2342

被折叠的 条评论
为什么被折叠?



