DLL文件的使用有显式链接(动态链接)和隐式链接(静态链接)
(1) 显示链接:在项目程序中用代码显示加载dll文件
准备的材料:dll文件
具体步骤如下:
-
调用 LoadLibrary(或相似的函数)以加载 DLL 和获取模块句柄。
-
调用 GetProcAddress,以获取指向应用程序要调用的每个导出函数的函数指针。 由于应用程序是通过指针调用 DLL 的函数,编译器不生成外部引用,故无需与导入库链接。
-
使用完 DLL 后调用 FreeLibrary。
(2)隐式连接:需要配置及添加相应的文件
准备的材料:1.c++类声明的头文件(*.h),头文件中需要有_declspec(dllexport)、_declspec(dllimport)的声明。
2、要链接的导入库文件(*.lib).该文件是dll生成时链接器创建导入的库。
3、dll文件。
当调用可执行文件的源代码被编译或被汇编时,DLL 函数调用在对象代码中生成一个外部函数引用。 若要
解析此外部引用,应用程序必须与 DLL 的创建者所提供的导入库(.lib 文件)链接。导入库仅包含加载 DLL 的代
码和实现 DLL 函数调用的代码。 在导入库中找到外部函数后,会通知链接器此函数的代码在 DLL 中。
所以如何生成导入库文件那?
在生成dll文件中加入模块定义*.def文件,模块定义 (.def) 文件为链接器提供有关被链接程序的导出、特性及
其他方面的信息。 生成 DLL 时,.def 文件最有用。内容如下:
; CreateDy2.def : 声明 DLL 的模块参数。
LIBRARY "CreateDy2"
EXPORTS
; 此处可以是显式导出然后在链接器-》输入-》模块化定义中添加./CreateDy2.def.该文件放在程序主目录下。
由此可以同时生成dll和导入库lib文件。
在其他程序中引用dll时需配置如下事宜:
1.在vs2010中在配置属性中-》c/c++-》常规-》附加包含目录:添加引用的头文件目录
2.在vs2010中配置属性中-》链接器-常规:附加库目录:添加lib文件的路径。
2.在vs2010中配置属性中-》链接器-》输入-》附加依赖项:添加导入库lib文件名
具体实现代码如下可下载:
http://download.csdn.net/detail/woshizfs/5110181