|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
NX二次开发中,关于卸载函数详细说明
, g/ ^7 N# D0 r0 j! f. s提供三种卸载方式: }* [* [6 X& Z
• Immediately 立即卸载方式— 只要返回给NX控制,NX卸载可执行文件NX ,这种方式适合在开发调试阶段使用。+ {- c F! c1 X9 i" n
• Explicitly 显式卸载方式 — 用户可以交互式的通过这个功能进行卸载 File → Utilities → Unload Shared Image.; X; U0 g2 h: P+ r/ y5 J
• At Termination NX 终止卸载方式—可执行文件不会卸载除非到关闭NX的进程,回话结束.这种方式可以增强性能,无论功能执行多少次,
F( ]2 B) W3 K只需要加载一次即可,通常在产品的发布的时候使用! ; T( h+ s+ i& [! P
我们的模版生成的,默认使用该卸载方式, 如果在开发阶段,可以更改为Immediately( `! } s, s; z; I' d
" \2 k( _( G% m
3 v& A) g( I! h% P2 |注意事项:
* f W6 x0 }1 N) `3 ? s
7 @& _. N) R9 ^" Q3 @" N4 e(1)不要企图通过卸载的方式来避免重启NX,通常情况下如果NX程序出现崩溃或者致命的错误,需要重新启动NX。! J* T* P0 U* c9 A- Y
(2)在多线程应用程序中,一个执行的程序可能同时被多个程序引用,在这种情况下,如果你想卸载这个程序,需要同时停止其他的程序,否则将会出现无效的引用。
$ ?( K' j; u4 ]6 ?% F(3)某些NXOpen 功能引用了入口点,比如UDO,在模型更新过程中提供方法去调用NX,这种情况下不能使用 Immediate or Explicit卸载方式4 i, d4 H" N- J# U
(4)使用Immediately方式可以避免一些编译器报告dll正在使用,无法编译的问题
1 z [9 { E, d% Y, x! U5 H (5)卸载后,将会释放license并做垃圾回收处理& L$ N' y8 w& f) r6 u
(6)如果程序注册了 part callbacks的回调函数,不能使用立即卸载方式。1 I* q* F& w$ L+ o$ U+ y# _; d& R5 ^
注意:应用程序注册了部件或者UDO相关回调函数,必须使用NX终止卸载方式。
* m2 {2 s: i" a7 U# @
. @9 c4 }6 p; k( g+ {+ P; V- extern int ufusr_ask_unload( void )
6 }1 F: ?! B" W6 b4 B! b, c# D - { ' u$ ]7 F" J8 i( e$ [0 U. P
- //return (int)Session::LibraryUnloadOptionExplicitly; //显示卸载方式
2 X6 v. Z, Y g - return (int)Session::LibraryUnloadOptionImmediately; //立即卸载方式
8 c" R* Y1 b6 e - //return (int)Session::LibraryUnloadOptionAtTermination; //NX终止卸载方式 % s/ i5 ? |8 y2 w
- } - L- f$ z2 y& T5 q, h# I
7 i; o5 W* E) o, L/ g! L+ P1 ?3 x. e- extern int ufusr_ask_unload( void ) . a8 b2 j" r8 |0 y& j, x$ |
- {
# u" o/ t0 Y9 X$ I - //return( UF_UNLOAD_SEL_DIALOG ); //显示卸载方式
/ H$ ?- d: ?: N0 \ - return( UF_UNLOAD_IMMEDIATELY ); //立即卸载方式 3 M( g2 q8 R) p( M
- //return( UF_UNLOAD_UG_TERMINATE ); //NX终止卸载方式 * F+ O3 t6 f. r
- }
复制代码 5 h$ b3 [$ a( |0 V- x# u
) J! b9 ]- [' l ?# v( y
( B- z9 l: J+ r- T! W |
|