动态库使用示例代码

来源:互联网 发布:tcl脚本语言编程 编辑:程序博客网 时间:2024/06/06 00:25

只是入门级的代码

动态调用方式的示例:

相对于静态库来说动态库的使用比较复杂一些。

这里将网上看到的一点内容总结下,方便日后学习:

-------------------------

该工程和下面的测试工程在同一个解决方案中

 

lib.h文件

#ifndef __LIB_H__
#define __LIB_H__

extern "C" int __declspec(dllexport) add(int x,int y);

#endif//lib.h

 

lib.cpp文件
#include "lib.h"

int add(int x,int y)
{
 return x+y;
}

--------------------------

main.cpp测试文件

#include <iostream>
#include <windows.h>

typedef  int (*LpAddFunction)(int,int);

int main()
{
 HINSTANCE hDll;//DLL句柄

 LpAddFunction add_function;

 hDll = LoadLibrary("..\\Debug\\lib_test.dll");
 
 if(hDll != NULL)
 {
  add_function = (LpAddFunction)GetProcAddress(hDll,"add");
  if(add_function != NULL)
  {
   int result = add_function(2,3);
   std::cout<<"2 + 3 = "<<result<<std::endl;
  }
  
  FreeLibrary(hDll);
 }

 return 0;

}

------------------------

 

在上面的例子中我们看到了由系统API提供的三位一体“DLL加载-DLL函数地址获取-DLL释放”方式,这种调用方式称为DLL的动态调用

 

静态调用方式可以将dll库考到相应的测试工程当中,也可以实现动态库到达调用

示例工程:

//#pragma comment(lib,"..\\Debug\\lib_test.dll")

 

extern "C"__declspec(dllimport)int add(int x,int y);

 

int main()
{
 int result = add(2,3);
 std::cout<<"2 + 3 =???? "<<result<<std::endl;
}

 

 

 

 

 

 

原创粉丝点击