您的位置:首页 > 其它

UG 二次开发 dll 签名

2013-06-12 20:30 549 查看
背景:这几天开始搞UG 的C#二次开发,由于公司的限制,开发过程是在自己电脑上的D版软件基础上进行,目标机是公司上的正版软件上运行。

问题:做完的dll可以在本机运行,但是一到公司就不行,提示错误大致为“加载库出错”。

过程:研究半天,排除了Net库版本的问题,最终发现在UG5.0开始,所有开发的DLL都要“签名”后才能被客户端上正版的UG调用。这一点在网上的教程中,提及的很少。(破碎的知识网络坑死人啊)。

解决方案:1. 如果是基于c++开发的dll,使用如下方法可以顺利签名成功(这里借用网上现有的文字和图片)

1-1)在文件里引用如下文件,然后静态编译自己的dll(MT或MTD)



1-2)启动NX Tools的DOS命令行,进入NX5安装目录的UGOPEN下,运行nxsign xxx.dll,其中的xxx.dll应该包含全路径,如下图。这里的nxsign.exe是为c++的dll签名的软件。如果签名成功,提示信息也如下。



2. 如果是基于c#开发的dll,使用如下方法签名(这有个深渊巨坑,翻遍网络,才在老外那找到一点解决的线索)

2-1) 向项目中添加资源文件,在“添加现有文件”的对话框里,找到UG安装目录下NXOPEN文件夹内的NXSigningResource.res文件,将它添加到项目中。







2-2)启动NX Tools的DOS命令行,进入NX安装目录的UGII下,运行SignLibrary.exe xxx.dll,其中的xxx.dll应该包含全路径,如下图。这里的SignLibrary.exe是为c#的dll签名的软件。如果签名成功,提示信息也如下。



2-3)这里坑来了,如果是使用的UG5.0里面的SignLibrary.exe,那么是无论如何都是提示签名不成功,错误提示大致意思为:读取内存错误,下面包含3个函数,只记得其中一个是 SignLibrary.Main(String[] args)(因为没法复现,所以没截图了)

因为UG5.0里面的SignLibrary.exe就是坏的!因此需要使用UG6.0版本(或以上,没试过)里面的SignLibrary.exe,才能完成签名。

而这个在国内的论坛里居然没人写过这个问题,如果邪恶点想,也许是我兲朝民间在搞二次开发的终端客户都是D版,不存在这类问题,呵呵。总之,把这些记录下来,希望可以让其他如我这般自学的人少走弯路,阿弥陀佛。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: