- 1、本文档共5页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
动态连接库与UG二次开发
动态连接库与UG二次开发
2009-06-03 02:16:29 来源: 作者: 【大 中 小】 浏览:10次 评论:0条
一开始,接课题啥都不懂,跑到这里问了一些问题,许多网友很热心,名字记不住,但心里挺感激他们。现在混到这份上了,从一穷二白,到多少懂了些东西,所以想搞一点东西出来回报社会。呵呵。。。。 UG自身的功能,我不熟悉,但首先要肯定,它们不难。就是个门槛的问题。UG二次开发的门槛算是比较高的。WIN32 API,MFC,DLL,C/C++,要想做高层次的开发,这些多少得懂一些。否则,就老老实实的呆在UG的环境里做个良民。而第一道门槛,就是动态连接库的问题。开发出来的东西,就是以DLL装到UG中的,理解DLL,很有必要。如果觉得没必要,看到这儿,兄弟您就可以打住了。
1。静态连接库
想先做个比喻来说这个事。 食堂里给1000个人做好了相同的午餐之后,是把它们逐份送到这1000个人手中,还是召集这些人到食堂里吃? 倘若采用第一种方式,那么需要考虑的问题有两个: (1) 效率问题:送饭的人得够数,倘若派俩小伙去送,送到黄昏也不见得就送完。 (2) 意外问题:假如饭都送出去了,突然发现厨师误在饭菜中放了些亚硝酸盐。及时通知吃饭的兄弟也不是件易事,总会有许多人死翘翘。 倘若采用第二种方式,那么上面这两个问题都可以很容易的得到解决。只不过想吃午饭的个别懒人得动弹动弹走走路了。
言归正传: 一开始没有动态连接库,只有静态连接库(再往前了说,也没有静态连接库)。不知道各位有多少人在DOS系统上写过程序,我上学的时候用TC写过hello world,但那时没有人跟俺讲静态连接库是啥,估计和我们老师有点菜有关系,自己不努力看书更有关系。所以现在如果还有同志不懂,那么就往下看看吧。讲的不对的地方,请发悄悄话给俺,偷偷指正。
静态连接库:程序员可以将公用模块的代码写成一个一个子程序(函数),编译成obj文件,最后将多个obj文件连接成一个lib文件。当用户程序中需要使用这些公用模块时,就包含它们的lib文件包进去,用户在自己的程序中只需要指定所需要的函数名称,编译器会在编译时,从lib中抽出对应的子程序代码-----复制到用户程序中去。这样搞的最大的好处就是不必一遍遍重写相同功能的代码。这种连接方法就是静态连接。(回想一下,第一次在Turbo C下,printf(“Hello,World!!!”)时的情景,printf从哪来?是从lib中来的)。
Lib应该是一群懒惰的程序员想出来的。说白了,就是让编译器替我们copy别人写过的代码!正是因为这种copy,暴露了Lib显而易见的缺点。
缺点1:试想假如你的机器上有1000个程序需要用到同一个静态连接库中的某个函数,由于静态连接库中的函数代码是复制到用户可执行文件中的,所以这1000个可执行文件中就会重复包含1000份相同的代码,硬盘空间就被浪费了。由于DOS系统是单任务系统,静态连接库的使用只表现在硬盘空间的浪费上了。而Windows系统是多任务的,假如把这1000个程序都装到内存中,那么就会装入1000份相同的代码!要是有象硬盘那么大的内存就好了!
缺点2:如果1000个程序需要用到同一个静态连接库中的某个函数。后来发现这个函数有问题,需要修正。改就改吧,于是就把静态连接库文件改改,编译一下。完事了么?没有!还得把这1000个程序全部重新编译一遍!
看到这儿,再回头看看前面的比喻,是不是有点贴切了。用食堂来比喻,还是不太对,应该用看电影来比喻!!!
2。动态连接库:
动态连接库(DLL)应该是随着windows95的出现而出现的。它的出现,恰恰弥补了静态连接库的缺点。
动态的连接库在程序设计过程中所起的作用与静态连接库的作用相同,都是提供一大堆函数供不爱写重复代码的程序员们使用,另外操作系统也是以DLL的形式提供接口函数的。
UG OPEN/API是什么?就是一群DLL提供的一大堆函数。
动态连接库与静态连接库,是以不同的手段来达到相同的目的。
静态连接库是将库中的代码复制到它的可执行文件中,首先它要占用多余的磁盘空间。而动态连接库只是在可执行文件运行时,才将库的代码调入内存。如果许多程序共用一个同一个动态连接库时,WINDOWS操作系统会在内存中仅保留一份库代码,通过分页机制,将这份代码映射到不同的进程空间中。这样,无论多少程序使用这样的一个库,库代码实际占用的内存永远只有一份。
让那1000个人到食堂里去吃饭吧,安全,而且效率高,浪费的资源亦少。
内存分页机制:
大家应该明白,程序运行时是需要操作系统的内存管理机制为其分配一段连续的程序(进程)空间,这就象一个人如果要跑步,那么你得给他安排一个操场。但是DOS操作系统对程序的空间分配是个很让当时的
您可能关注的文档
最近下载
- 工程造价专业技术工作总结范文(精选10篇).docx VIP
- 基坑土方开挖及外运工程施工组织设计.docx VIP
- 12BJ1-1 工程做法(华北标BJ系列图集).doc VIP
- JBT 7538-2016 管道用篮式过滤器.pdf VIP
- 安全生产高处作业.docx VIP
- 新解读《GB_T 23722-2009起重机 司机(操作员)、吊装工、指挥人员和评审员的资格要求》最新解读.docx VIP
- (中级)装饰美工技能鉴定理论考试题库(含答案).docx VIP
- 小流域水土流失治理服务方案.doc VIP
- 大型球铁铸件浇冒口设计原理.pdf VIP
- 福建省莆田市南门集团2023年小升初数学试卷(含答案).docx VIP
文档评论(0)