51Testing软件测试网%P8AeV+Q|M~/@ 公司新产品PDMS8.0对的CAD兼容,只能达到2002,对于客户的需求于是公司展开的对高版本的程序编译实施策略.51Testing软件测试网S`foq9H2ZB
51Testing软件测试网K,~O'PE4r4|%G对于高版本的程序编译有三种方案:51Testing软件测试网 D ^/ZnJx
51Testing软件测试网"g;q$VD.~1、对于每个依赖Arx的动态库修改配置和动态库名字,这样间接依赖的库也必须修改名字。51Testing软件测试网l4TD&GN%Q*F)C4b
如APGraphciManager依赖AcDb15 , APPipeTransaction10和APEquipTransaction10都依赖 APGraphciManager,间接依赖AcDb15 ,编译不同版本后动态库变为51Testing软件测试网:{^Y/bZta
2002版本:APPipeTransaction2002 , APEquipTransaction2002 , APGraphciManager200251Testing软件测试网"PN9_(e T&w_
2004版本:APPipeTransaction2004 , APEquipTransaction2004 , APGraphciManager200451Testing软件测试网 ]BI5`.C0Fb5y_w
这种方法非常安全,但是需要改动的非常大,我们以前的软件就是这样做的
\%R$f}Y0eU0[,lM0
51Testing软件测试网t0uq d&Py"c2、只修改依赖Arx的动态库配置,动态库的名字不改变
%| vx$?B CK0\|0如上面编译后为51Testing软件测试网1[6\
pda/R7f|;i
2002版本:APGraphciManager10, APPipeTransaction10 , APGraphciManager1051Testing软件测试网YTL
Q.m)Ti
2004版本:APGraphciManager10, APPipeTransaction10 , APGraphciManager1051Testing软件测试网G!G]8zy v
mHUC
那么如何区分不同的动态库呢?通过建立不同的目录来区分,在安装目录下的文件目录为
uf&aR6s4d2v0主目录: 51Testing软件测试网
BM Ufc:X
APPipeTransaction10 , APEquipTransaction10
af ek*LN0 2002版本
K\3Ib(j H.gZ6A0 APGraphciManager10 在2002下编译的
-~WW6hO
\#gMn0 2004版本 51Testing软件测试网4?'X+G
s(U*?!Yt\Q
APGraphciManager10 在2004下编译的
qQ m3v/k0在安装的时候把cad2002的支持目录增加"../主目录/2002版本",把cad2004的支持目录增加"../主目 录/2004版本",这种方式修改的动态库比较少,仅仅只需要重新编译和配置与Arx相关的动态库.PDSoft就 是这样做的.
y&sd p OmU epoG0
51Testing软件测试网*@~%uV1xxx-j+q51Testing软件测试网/_D(Hw{?2zTF
3、让需要的动态库始终跟着安装包
@*{2r@Y
F
S2K0 这样不用修改只需要把这些动态库放在安装目录下即可,这种方法只是对一些非常稳定的动态库有效 .如AcGe15.dll,我们只是用到了其中的AcGeVector3d/AcGePoint3d/AcGeMatrix3d ,这些库的这三个类 没有变化,所以不会出错.但是对于一些变化比较大大类就可能不行了,如AcDb15.
g7ZPw[(I#Q+x(U5z0
c2]/X N|(x:MB*r0
M#API-|In0K0 dll.另外我们一些VC需 要的动态库,如MFC42.dll等随着编译其版本不同可能不一样也需要跟着安装包走.51Testing软件测试网2{:c(@kk2E$H-YvH
这种方法危险性比较大,一段来说只是起辅助作用,对那些非常稳定的库有用51Testing软件测试网Br4o0O$e6R
51Testing软件测试网b {;lzGUD _z51Testing软件测试网K:s0Hng%B*Qk
现总结一下,各种方法的差异
x2~o8bN"_0第一种方法: (现有的方法)
CzB_4_Ff)o R
SI0主目录:
(W)J
e
oa(|0 APPipeTransaction2002 , APEquipTransaction2002 , APGraphciManager2002
6`|"]TLT0 APPipeTransaction2004 , APEquipTransaction2004 , APGraphciManager2004
"f9}!T%@ Ob'\"`0
51Testing软件测试网Jgax])mn51Testing软件测试网5f:o0rk+].q
P
第二种方法: (PDSoft的做法)51Testing软件测试网4~7[)|!}#pI
主目录:
Qc9b$y_`:R%p0 APPipeTransaction10 , APEquipTransaction10
+R KlZ%em
b1~5L0 2002版本(子目录)
F0rMN'Jh6}0 APGraphciManager10 在2002下编译的
1dS|BV0 2004版本(子目录) 51Testing软件测试网3A;]z{4W4]1B{
R
P
APGraphciManager10 在2004下编译的
c`-Pn
Gx]0
/_UxwO P4UHi0x051Testing软件测试网%TSDX
\&t*_
第三种方法:
r:x I$B[8K7@ciZ0主目录:
?'E-sMy
a"Q0 APPipeTransaction10 , APEquipTransaction10 , APGraphciManager10 , AcGe15.dll,Mfc42.dll
*K'{D Lqz;}F0
3s7r,e]N
v0
51Testing软件测试网w*Rw;B
wY+ue
z最终结果采用第二种方法,mfc42.dll,mfc70.dll,mfc80.dll打入安装包,安装时放在system32目录下,把2002/2004路径定义也放在arx.ini或config.ini里,启动程序读出arx版本路径,然后加载到supportpath中51Testing软件测试网P E.~'Wl~F
51Testing软件测试网ejG7b?Q 51Testing软件测试网n
Dw G|.N/}
E