在VS2012中调用动态链接库

来源:互联网 发布:ui设计培训知乎 编辑:程序博客网 时间:2024/06/11 16:27

一、静态调用

1. main函数中直接声明库和导出函数,如下示例:

#pragma  comment(lib, “Hello.lib”)  //首先添加静态库extern “C”  void __declspec(dllimport) Hello (); //声明将要使用的函数int main(){        Hello(); //直接调用该函数}


 

2. dll的头文件和静态库同时包含在main.cpp中,如下示例:

#include  <Hello.h>  // 在main.cpp中添加头文件,其实与第一种方法差不多,    
                     // 只是这种方法更省事,可直接复制粘贴。#pragma  comment(lib, “Hello.lib”)  //添加静态库int main(){Hello(); //直接调用该函数}


3. main.cpp 中添加头文件,将静态库提供给编译器来链接:

 

具体操作:选中“项目”,左键单击,选择“属性”,在弹出窗口左侧选中“链接”,再选择“输入”,在第一项“附加依赖项”里加入:Hello.lib; 

然后在main.cpp文件中还是要加入头文件,其余如上。

 

二、动态调用

动态调用过程如下:

typedef void(* lpHello)(void) ; //宏定义函数指针类型int main(){HINSTANCE hDLL;  //DLL句柄lpHellohello; //函数指针hDLL = LoadLibrary(“Hello.lib”) ; //载入动态链接库if(hDLL != NULL){hello  =  (lpHello)GetProcAddress(hDLL, “Hello”); //获得函数地址if(hello != NULL){hello(); //调用函数}FreeLibrary(hDLL) ; //释放DLL}}

动态调用使用的是“DLL加载—DLL函数地址获取—DLL释放”的方式。








0 0
原创粉丝点击