人小鬼不大

导航

 

一、创建DLL项目

  打开VS2008,点击File——>New——>Project——>Visual C++——>Win32 Console Application,填入工程名称,下一步,选择Application Type为DLL,Additional options为Empty project。

  添加cpp文件和h文件,实现DLL需求的功能。、

  点击生成解决方案,可在对应目录下看到生成的lib和dll文件。

二、DLL的函数导出和加载

  DLL导出有两种方式:__declspec(dllexport)和.def文件。c++加载DLL也有两种方式(静态链接和动态链接)。

1、用__declspec(dllexport)导出函数  

  #ifdef XXX_EXPORTS
    #define XXX_API __declspec(dllexport)
  #else
    #define XXX_API __declspec(dllimport)
  #endif

  extern "C" BOOL XXX_API XXX(函数参数列表);

2、用.def导出函数

  LIBRARY "xxx"(DLL的名称)
  EXPORTS
    xxx(要导出的函数名)

3、静态链接

  #pragma comment(lib,"xxx.lib")

  

4、动态链接

  typedef BOOL (*XXXFun)(参数列表);

加载:

  HMODULE hModule = LoadLibrary(_T("XXX.dll"));
  if(NULL != hModule)
  {
    XXXFun funCreateObject = (XXXFun)GetProcAddress(hModule,"CreateObject");
    if(funCreateObject != NULL)
    {

      ...

    }

  }
  else
  {
    perror("funCreateObject失败");
    FreeLibrary(hModule);
  }

  静态链接的时候不关心函数的导出函数名字,只有动态链接的时候才会关心函数的导出名字。调用函数的时候一定要注意调用约定,不然会导致程序崩溃。

三、DLL的使用

  创建一个新的Win32控制台项目或其他,设置C/C++和Linker相关项。

 

posted on 2020-01-19 21:39  人小鬼不大  阅读(481)  评论(0编辑  收藏  举报