1.4 编译器与签名

NX二次开发时,官方对编译器有明确要求,不同NX版本应该采用对应的编译器设计代码,其说明可以在帮助文档“Release Notes”中找到。

1.4.1 编译器

常见的NX版本与编译器的对应关系如表1-2所示。

表1-2 常见NX版本与编译器的对应关系(C/C++)

根据笔者经验,读者可能会遇到以下情况:

● 使用与NX版本不匹配的编译器设计代码,编译链接通过,但在NX中运行应用程序时系统报错。解决措施是换对应版本的Visual Studio重新编译链接。

● 在低版本NX中开发的应用程序,不能在高版本NX中运行。这是因为高版本NX中的*.lib文件发生了变更,需要在高版本NX对应的Visual Studio中使用最新的库,修改代码再编译链接它。通常情况下,在低版本NX中开发应用程序时,如果只使用libufun.lib、libnxopencpp.lib、libugopenint.lib、libnxopenuicpp.lib这四个库,是可以在高版本NX中运行应用程序的。

需要注意的是,就算在低版本NX中开发的应用程序,可以在高版本NX中运行,但从NX1926开始官方对NX二次开发的应用程序增加了检查,如果来自不匹配的编译器会发出警告,但暂时不影响使用。若要关闭这个警告,操作如下:

在NX中单击“Menu”→“File”→“Utilities”→“Customer Defaults”按钮,启动Customer Defaults工具,在打开的对话框中单击左侧的“General”节点,然后在对话框的右侧单击“Automation”选项卡,如图1-3所示,再取消勾选其中的“Show Warning when Loading”复选框,最后重启NX即可。

图1-3 关闭加载时显示警告

1.4.2 签名

使用NXOpen创建的应用程序可执行文件必须签名后才能由没有NXOpen Author许可证的任何人执行。从NX1872开始,可以使用NXOpen签名应用程序对可执行文件进行签名,也可以直接对可执行文件进行数字签名。以前,由于NXOpen签名与数字签名不兼容,因此不能同时执行这两种签名。

添加数字签名可提高安全性和保护级别,尤其是在应用程序进入其他站点时。数字签名可以通过Microsoft批准的第三方证书颁发机构(CA)执行,也可以由开发者自己执行。

NX二次开发的应用程序签名需要以下两个步骤:

● 在您的Visual Studio项目中添加代码“#include<NXSigningResource.cpp>”(它位于目录“%UGII_BASE_DIR%\ugopen”中),编译链接生成应用程序。

● 在计算机中按“Windows键+R”打开“运行”对话框,输入“cmd”回车后打开“命令行程序”窗口,再在窗口中输入“%UGII_BASE_DIR%\nxbin\signcpp d:\dllFullPath.dll”回车即可。其中“d:\dllFullPath.dll”代表被签名*.dll文件的完整路径。

笔者建议开发者在实战项目中编写批处理程序实现批量签名。