测试之家淘宝店:主营软件测试定制服务 http://shop71136398.taobao.com/ 软件评测试考试论坛:http://www.testdao.com/forum-113-1.html 2012软件评测师考试群:28388329

高版本的程序编译实施策略

上一篇 / 下一篇  2007-10-26 13:34:42 / 个人分类:白盒测试

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软件测试网l4T D&GN%Q*F)C4b
如APGraphciManager依赖AcDb15 , APPipeTransaction10和APEquipTransaction10都依赖 APGraphciManager,间接依赖AcDb15 ,编译不同版本后动态库变为51Testing软件测试网:{^Y/bZta
 2002版本:APPipeTransaction2002 , APEquipTransaction2002 , APGraphciManager200251Testing软件测试网"P N9_(e T&w_
 2004版本:APPipeTransaction2004 , APEquipTransaction2004 , APGraphciManager200451Testing软件测试网 ]BI5`.C0Fb5y_w
这种方法非常安全,但是需要改动的非常大,我们以前的软件就是这样做的

\%R$f}Y0eU0[,lM0 51Testing软件测试网t0uq d&Py"c

2、只修改依赖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软件测试网 B MUfc:X
   APPipeTransaction10 , APEquipTransaction10
afek*LN0   2002版本
K \3Ib(jH.gZ6A0       APGraphciManager10  在2002下编译的
-~WW6hO \#gMn0   2004版本 51Testing软件测试网4?'X+G s(U*?!Yt\Q
       APGraphciManager10  在2004下编译的
qQm3v/k0在安装的时候把cad2002的支持目录增加"../主目录/2002版本",把cad2004的支持目录增加"../主目 录/2004版本",这种方式修改的动态库比较少,仅仅只需要重新编译和配置与Arx相关的动态库.PDSoft就 是这样做的.

y&sd p OmU epoG0 51Testing软件测试网*@~%uV1xxx-j+q

51Testing软件测试网/_ D(Hw{?2zTF
3、让需要的动态库始终跟着安装包
@*{2r@Y F S2K0   这样不用修改只需要把这些动态库放在安装目录下即可,这种方法只是对一些非常稳定的动态库有效 .如AcGe15.dll,我们只是用到了其中的AcGeVector3d/AcGePoint3d/AcGeMatrix3d ,这些库的这三个类 没有变化,所以不会出错.但是对于一些变化比较大大类就可能不行了,如AcDb15.
g7ZPw[(I#Q+x(U5z0

c2]/XN|(x:MB*r0

M#API-|In0K0   dll.另外我们一些VC需 要的动态库,如MFC42.dll等随着编译其版本不同可能不一样也需要跟着安装包走.51Testing软件测试网2{:c(@kk2E$H-YvH
  这种方法危险性比较大,一段来说只是起辅助作用,对那些非常稳定的库有用51Testing软件测试网Br4o0O$e6R

51Testing软件测试网b{;lzGUD _z

51Testing软件测试网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])mn

51Testing软件测试网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下编译的
1d S|BV0   2004版本(子目录) 51Testing软件测试网3A;]z{4W4]1B{ R P
       APGraphciManager10  在2004下编译的

c`-Pn Gx]0

/_UxwO P4UHi0x051Testing软件测试网%TSDX \&t*_
第三种方法:
r:xI$B[8K7@ciZ0主目录:
?'E-sMy a"Q0   APPipeTransaction10 , APEquipTransaction10 , APGraphciManager10 , AcGe15.dll,Mfc42.dll
*K'{DLqz;}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软件测试网PE.~'Wl~F

51Testing软件测试网ejG7b?Q

   51Testing软件测试网n DwG|.N/} E


TAG: 白盒测试

 

评分:0

我来说两句

Open Toolbar