NX 签名

场景描述:

环境:VS2010+NX10

假设库项目为A,使用项目为B。A头文件中包含:

static unsigned char nxauthblock[] = "NXAUTHBLOCK      "
                                     "                                                  "
                                     "                                                  "
                                     "                                                  "
                                     "                                                  "
                                     "                                                  "
                                     "                                                  "
                                     "                                                  "
                                     "                                                  "
                                     "                                                  "
                                     "                                                  "
                                     "      NXAUTHBLOCK";

extern DllExport void NXSigningResource(void)
{
}

然后B调用A,配置头文件,库目录,附加依赖项后,B签名失败......

 

原因:

按理说,B中已经包含了签名函数,应该签名正确!

检查发现,B虽然调用了A,但是B并没有用到A中的函数,会不会跟这个有关?

于是在B中添加了对A函数的调用,签名成功!!!

原因A是动态库,如果没有函数使用,A不会加载进来,即签名函数没有添加,造成签名失败 !!!

 

其他问题补充1:

另如果B调用了A,无论是否使用了A函数,如果此时添加NXSigningResource.cpp文件,

编译会报错,因为签名函数存在两份。

 

其他问题补充2:

NX功能中 签名函数只能有一份,否则编译冲突。

如果当前功能代码不包含签名文件,调用的第三方库包含了签名文件:

此时可能会出现奇怪的问题:Debug签名成功,Rease签名失败

解决办法:

打开项目属性,逐个比较Debug/Release不同,一般是”C++/优化” 和 ”链接器/优化”,更改即可。

 

总结:

创建NX第三方库时,不宜添加签名文件,在项目本身添加签名文件更好。

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值