在UG5.0开始,所有开发的DLL都要“签名”后才能被客户端上正版的NX调用。
1. 如果是基于c++开发的dll,使用如下方法可以顺利签名成功(这里借用网上现有的文字和图片)
1.1.在cpp文件中需要添加头文件
#include <NXSigningResource.cpp>
2.1.启动NX Tools的DOS命令行,进入NX安装目录的UGOPEN下,运行nxsign xxx.dll,其中的xxx.dll应该包含全路径,如下图。这里的nxsign是UGOPEN目录下的nxsign.exe软件,为c++的dll签名的软件。如果签名成功,提示信息也如下。注意nxsign.exe只能用在NX8.0之前的版本,在NX8.5之后用的是signcpp.exe,因此命令行需要写成 signcpp xxx.dll
其实不用这么麻烦,直接找到signcpp.exe文件,将多个dll拖到signcpp.exe上就可以签名了:
缺点是也不知道签名成功了没有,有没有报错啊等等,为了解决这个问题,还得靠自己勤劳的双手,顺手写个脚本。
批处理源码(将源码拷到文本,扩展名改为.bat,按照下面这个动画使用,其他NX版本照葫芦画瓢改改也能用):
@echo off title 正版批量签名工具 by 王牌飞行员_里海 20201124 if "%1"=="" ( echo 请用拖文件形式运行! ping 127.1>nul&exit/b) echo 正在签名... for %%i in (%*)do ( echo. echo. echo 签名%%i : "%UGII_BASE_DIR%NXBINsigncpp.exe" %%i ) echo. echo. echo. pause ::NX8.5 "C:Program FilesSiemensNX 8.5UGOPENsigncpp.exe" %%i ::NX11.0 "C:Program FilesSiemensNX 11.0UGOPENsigncpp.exe" %%i ::NX12.0 "%UGII_BASE_DIR%NXBINsigncpp.exe" %%i ::NX12.0 "D:Program FilesSiemensNX 12.0NXBINsigncpp.exe" %%i ::NX10.0 "D:Program FilesSiemensNX 10.0UGOPENsigncpp.exe" %%i
效果:
舒服~~~~~~
部分参考:https://www.ugapi.com/thread-5896.html