16位驱动DLL开发与硬件连接全解析
16位驱动DLL简介
在开发Windows DLL时,链接器的使用与DOS应用有所不同。DOS应用的链接命令行通常不指定库,因为C编译器会在.OBJ文件中嵌入信息,告知链接器使用哪个库(小、中、大模型)。而Windows DLL需要特殊版本的C库,即?dllcew.lib而非?libcew.lib,其中?是内存模型的缩写。
使用VC++ 1.x时,应使用/NOD选项,避免链接器引入.OBJ文件中指定的C库。同时,需明确列出DLL版本的库?dllcew.lib作为库参数,并指定LIBW作为第二个库,它是包含Windows API函数的导入库。
此外,可使用IMPLIB工具为DLL构建导入库。IMPLIB以DLL的.DEF文件为输入,生成包含导出函数名和模块的.LIB文件,该文件随后作为库链接到使用该DLL的应用程序。IMPLIB无需选项开关。
最后,将驱动DLL复制到Windows目录虽非严格必要,但很实用。运行时,Windows查找DLL的方式与查找.EXE文件相同,会搜索当前目录、Windows目录、Windows系统目录以及PATH