排查发现目前MS update17版本的BentleyGeom5.dll中的ExtractBoundaryString函数跟update 17 的SDK 中BentleyGeom.lib文件导出的ExtractBoundaryString函数不一致。导致我们如果引用这个文件的话,会出现自己编译的dll不能加载到MS中。如下图所示
...
不应该提示的“不信任”吧?而是一个类似如下的错误提示:
如果提示不信任,很有可能是你不小心启动了MS的安全版本,这个安全版本要求被装载的程序要有数字签名才行。
启动MS的安全版本这个问题我检查过了,确定没有启动过安全版本。但是低版本编译的dll还是提示不信任,详细信息是“没有授权的数字签名。”
Work smart, not just work hard!
嗯嗯,确实是这样。实际情况会遇见这样的问题:有的人就不喜欢升级MSTN版本,但是还想用我们开发人员编译出来的高版本SDK下的插件。这种情况下,高低版本的兼容性就很重要
Yongan.Fu said:检查配置变量MS_SECURITY_LEVEL的值是否是NONE或LOW
检查确认时是NONE
您可能也不方便将您整个项目的源代码发给我们来测试。能否搞出一个最简单的测试项目能复现您描述的情况的?我在我这边测试一下。另外,SDK中带有的例子,您用SDK17.2编译后能在您MS17.2中正常加载吗?
符老师好,我总结了我遇见的mstn不能正常加载dll有两类问题。其中一个是本帖子中说的,是由于17.2的MSTN和17.1sdk出现函数的参数不一致导致的,目前昨天刚出来的17.2的SDK编译的dll是不是能加载,我还在测试中,但是我检查了对应lib文件,确实是改过来了,我估计应该问题不大。另一类是我在另外一个帖子中说的(下方链接),我想用低版本的sdk编译的dll在高版本的MSTN中加载,但是您是不推荐这样做的,可是实际上确实有这个需求的。
Yongan.Fu said:SDK 13编译的程序不要尝试在MS17下加载。
communities.bentley.com/.../msce-update-17-ms
我能理解您想让低版本DLL也能在高版本软件中运行的需求。但这确实会带来不可预知的隐患的。由于终端用户可能会使用不同版本的软件,我们作为开发者可以生成针对多个版本的DLL,然后制作一个安装程序,在安装程序中先行判断用户软件的版本,然后将对应版本的DLL复制到用户的机器中。这个方案是最安全的。