热度 1|||
题记:前两年明经博客好象有病毒,再后来好象不能访问了,今天偶然发现了以前的日志。
这里只讨论.Net编译的dll文件的装载顺序,不讨论arx文件,vlxl文件,lsp文件以及Acad.rx, ACAD*.LSP, ACAD*doc.LSP等的装载顺序
1. 当两个dll文件(File1.dll和File2.dll)互相没有关系时,两者的自动装载顺序是依据其两者在AuotCAD注册表Applications里面的顺序,比如File1.dll对应aFile项, File2.dll对应bFIle项,这样aFile项会排在上面(即前面),AutoCAD自动装载时就会先装载File1.dll,再装载File2.dll.
2. 当两个文件(File1.dll和File2.dll)存在着依赖关系时,比如File2.dll依赖于File1.dll,即使在程序里面是File2.dll引用File1.dll;在AutoCAD自动装载时也还是认为两个文件没有关系,依然按照前面所说的在注册表里面的顺序进行装载;若需要让File1.dll先装载,然后File2.dll再装载,则需要在File2.dll文件里面的Initialize()函数里面访问一下File1.dll的静态变量;访问File1.dll的静态函数或生成一个File1.dll里面的类实例是否可行没做测试,但要注意的是,访问File1.dll应该是永远成功的,设想一下,我们访问File1.dll,而此时File1.dll可能还没装载;另外,在其他地方使用File1.dll的静态变量是否能实现这个目的也没有测试(简单测试结果是不行的).
草木世交.Sieben