|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
NX二次开发中,关于卸载函数详细说明
1 ]. R( V* S, }, r; q! ]3 I9 [: o$ P提供三种卸载方式:% |( x( e7 d) ?# N3 ?9 F
• Immediately 立即卸载方式— 只要返回给NX控制,NX卸载可执行文件NX ,这种方式适合在开发调试阶段使用。& ]& h) l5 L- l; Y0 M3 H( |
• Explicitly 显式卸载方式 — 用户可以交互式的通过这个功能进行卸载 File → Utilities → Unload Shared Image.
0 W+ r( E4 D2 U- F3 _• At Termination NX 终止卸载方式—可执行文件不会卸载除非到关闭NX的进程,回话结束.这种方式可以增强性能,无论功能执行多少次,
+ b" b# e' k) r2 y只需要加载一次即可,通常在产品的发布的时候使用! * h1 [6 U" _- ]9 {* f
我们的模版生成的,默认使用该卸载方式, 如果在开发阶段,可以更改为Immediately q6 W) n# u \
: i4 o0 W! A+ X8 g. U
5 y |7 Q$ w7 i a注意事项:) g4 S) \& P4 m( ]" l8 t( D
8 n' v' @7 h; [(1)不要企图通过卸载的方式来避免重启NX,通常情况下如果NX程序出现崩溃或者致命的错误,需要重新启动NX。
) }5 E5 f, }; B: b+ S% e: Q6 I(2)在多线程应用程序中,一个执行的程序可能同时被多个程序引用,在这种情况下,如果你想卸载这个程序,需要同时停止其他的程序,否则将会出现无效的引用。
Q! E* W4 o: P. G D2 q$ R(3)某些NXOpen 功能引用了入口点,比如UDO,在模型更新过程中提供方法去调用NX,这种情况下不能使用 Immediate or Explicit卸载方式
$ J: p& y% d- W5 ^ (4)使用Immediately方式可以避免一些编译器报告dll正在使用,无法编译的问题
6 ~' `* r8 I. ^- S (5)卸载后,将会释放license并做垃圾回收处理
, p5 a! r$ ]9 I (6)如果程序注册了 part callbacks的回调函数,不能使用立即卸载方式。* {: e; D" X* z6 Y, p
注意:应用程序注册了部件或者UDO相关回调函数,必须使用NX终止卸载方式。5 E8 o1 Q' F' }. G: s7 S, C- s6 p
, q/ |3 ^4 T6 l( X, G' `
- extern int ufusr_ask_unload( void )
0 W. ^/ Y5 o* k2 l( j" j. S5 b - {
7 k2 f4 @: w' }+ F0 I6 Y8 J, O% c - //return (int)Session::LibraryUnloadOptionExplicitly; //显示卸载方式
8 g2 ^* F3 N& M4 x9 H- ] - return (int)Session::LibraryUnloadOptionImmediately; //立即卸载方式
9 u- d- F9 J8 B7 d7 L8 K( X* w9 Y - //return (int)Session::LibraryUnloadOptionAtTermination; //NX终止卸载方式 : ^* p0 b! z! M
- } 1 Z z/ B9 O' i: d4 n8 T& R
8 u" D, d; \7 K4 ^0 ]- extern int ufusr_ask_unload( void )
, `0 U6 ?. ~( U - { . S W; g0 k4 c$ E
- //return( UF_UNLOAD_SEL_DIALOG ); //显示卸载方式 % i: K1 [) j9 K+ C4 }% M
- return( UF_UNLOAD_IMMEDIATELY ); //立即卸载方式
0 i2 e q8 l5 V0 M( a: K - //return( UF_UNLOAD_UG_TERMINATE ); //NX终止卸载方式
1 ^0 W% G9 Y% Q6 q. O N, K! S - }
复制代码 : ~" ^1 ]+ e9 p6 e
! P5 [( S1 D& u# O H$ w8 o; a5 U) C8 R% z5 |
|
|