详解import导入库的过程
import导入库时查找顺序为“内核库->标准库->用户库”。
外部库文件的物理路径与名字空间路径保持一致(将物理路径中的斜杠替换为圆点就是名字空间路径)。
我们以下面的import语句为例详解导入库的过程:
import time.ole //将外部库time.ole导入当前名字空间
1、查询库缓存
已导入的库会直接加载到当前名字空间,不会重复导入相同的库,否则继续下面的过程。
2、查询内核库
如果内核库中存在该库,导入库,否则继续下面的过程。
3、查找编译嵌入EXE的库文件
aardio会优先加载编译发布EXE时嵌入EXE文件的库模块。
4、查询标准库
如果仍然没有找到库。在启动当前进程的EXE文件根目录下的的lib目录下查询库文件,从根目录逐渐向下层子目录开始搜索,查找顺序如下(按查找顺序先后排列):
~\lib\time.ole.aardio
~\lib\time\ole.aardio
~\lib\time\ole\_.aardio
如果找到aardio代码文件或编译后的二进制aardio文件,加载并运行,并将文件路径作为参数传递给目标文件。
5、查询用户库
如果仍然没有找到,按第三步的过程,在当前工程目录\lib目录,或启动文件所在目录\lib目录下查找用户库, 查找顺序如下(按查找顺序先后排列):
\lib\time.ole.aardio
\lib\time\ole.aardio
\lib\time\ole\_.aardio
如果找到aardio代码文件或编译后的二进制aardio文件,加载并运行,并将文件路径作为参数传递给目标文件。
注意在aardio开发环境中 "~\lib\" 表示aardio.exe所在目录下的标准 库,而 "\lib\"表示虚拟根目录下的用户库。对于一个工程来说工程目录就是虚拟根目录,对于一个在工程之外单独运行的aardio文件 - 文件所在的目录就是虚拟根目录。对于发布后的EXE文件来说,"\lib\"与"~\lib\"默认都是指EXE文件启动目录,在创建线程、协程时 - 可以在参数中改变虚拟根目录。
6、查询扩展库
如果当前是运行在aardio开发环境中,仍然没有找到匹配的库文件,aardio会检查扩展库列表并安装扩展库。