NX开发内部插件时怎么实现对多个版本的支持?
如我要开发一个插件,是在2306的环境下开发的,这样一些函数就无法支持更低版本,如果使用更低版本的函数开发可能会遇到不能兼容高版本的问题,有没有什么办法可以让dll兼容更多的版本,我的想法是使用不同版本的开发环境进行编译,然后在执行时根据当前运行的NX版本决定使用哪个dll.只有思路不知道具体该怎么实现,有没有大佬可以给支个招如果你期望每个版本编译一个dll,让NX启动时,自动分析应该调用哪一个dll,这个方法很简单的。在NX启动的时候,获取NX版本,然后动 态调用,你开发的dll,具体哪一个,就分NX本版本就可以了。
这也是目前市面上,其他NX二次开发工具,主流的做法。 要实现这样的技术,原理很简单的,就是不要用NX提供的静态库做二次开发,这样就能保证这个dll在多个版本运行(当前提提是每个版本对应的API还存在,如果某一个版本不存在了,也还是要维护的)。
虽然这个原理很简单,但目前市面上,基本上没有几个人这样去开发,如果只开发一个简单的功能,这样玩是很容易的。但是,如果当你想开发一整套功能,都用这种技术,那就需要大量的验证,和技术维护,甚至还要对NX的封装,内部机制有一定的了解。
目前市面上,就模圣开发的,模圣软件整套功能,用的这项技术。 我个人不是很喜欢编译成DLL,一点小改动就得重新编译。所以更倾向VB和Python Jefft* 发表于 2024-1-22 16:49
如果你期望每个版本编译一个dll,让NX启动时,自动分析应该调用哪一个dll,这个方法很简单的。在NX启 ...
函数获取到NX版本,但是要执行函数就要调用dll,这时就会出现版本不兼容问题了,我不太理解是怎么实现在调用dll之前就可以获取到NX版本版并决定调用哪个dll的,您还能帮我解答一下吗?谢谢! 296567996 发表于 2024-1-24 08:43
函数获取到NX版本,但是要执行函数就要调用dll,这时就会出现版本不兼容问题了,我不太理解是怎么实现在调用 ...
是不兼容,还是不能用?你根本就没有描述清楚,如果是不兼容,从NX1926开始,只是会弹一个警告,意思是当前编辑的dll没有在对应的VS中进行,这个警告通过NX用户默认设置可以关掉,不影响功能的使用。
如果是完全不能启动,使用dll中的功能,那是自己写的代码有问题。解决方法很多,市面上主流的解决方法是,建VS项目的时候,只引用ufun几个库就可以了,不要引用NXOpen中的库,然后这个dll仅是获取版本和启动对应DLL的功能。
UFUN的函数,官方基本不维护了,所以它改动的可能性低(除了管道模块,后面的版本也有很多改动)。简单点理解,如果一个dll中的功能,没有block UI也没有引用NXOpen的库,那么这个dll,99.99%是可以版本通用的,所以用这个dll来获取版本,分别调用不同的dll就可以了。
上面只是常规手段,还有一种就是完全不用静态库,也能启动起来的。
膜拜大佬
页:
[1]