C/C++中动态链接库的创建和调用

分类: VC.NET   出处:iocblog整理  更新时间:2008-10-25   添加到收藏  

动态连接库的创建步骤:

  一、创建non-mfc dll动态链接库

  1、打开file ―> new ―> project选项,选择win32 dynamic-link library ―>sample project

  ―>工程名:dlldemo

  2、新建一个.h文件dlldemo.h

以下是引用片段:
  #ifdef dlldemo_exports
  #define dllapi __declspec(dllexport)
  #else
  #define dllapi __declspec(dllimport)
  extern "c" //原样编译
  { (文章来源 www.iocblog.net)
  dllapi int __stdcall max(int a,int b); //__stdcall使非c/c++语言内能够调用api
  }
  #endif

  3、在dlldemo.cpp文件中导入dlldemo.h文件,并实现max(int,int)函数

以下是引用片段:
  #include "dlldemo.h"
  dllapi int __stdcall max(int a,int b)
  {
  if(a==b)
  return null;
  else if(a>b)
  return a;
  else
  return b;
  }

  4、编译程序生成动态连接库

  二、用.def文件创建动态连接库dlldemo.dll。

  1、删除dlldemo工程中的dlldemo.h文件。

  2、在dlldemo.cpp文件头,删除 #include dlldemo.h语句。

  3、向该工程中加入一个文本文件,命名为dlldemo.def并写入如下语句:

  library mydll

  exports

  max@1(文章来源 www.iocblog.net)

  4、编译程序生成动态连接库。

动态链接的调用步骤:

  一、隐式调用

  1、 建立dllcnsltest工程

  2、 将文件dlldemo.dll、dlldemo.lib拷贝到dllcnsltest工程所在的目录

  3、 在dllcnsltest.h中添加如下语句:

以下是引用片段:
  #define dllapi __declspec(dllimport)
  #pragma comment(lib,"dlldemo.lib") //在编辑器link时,链接到dlldemo.lib文件
  extern "c"
  {
  dllapi int __stdcall max(int a,int b);
  }

  4、在dllcnsltest.cpp文件中添加如下语句:

以下是引用片段:
  #include "dllcnsltest.h"//或者 #include "dlldemo.h"
  void main()
  {
  int value;
  value = max(2,9);
  printf("the max value is %d ",value);
  }

  5、编译并生成应用程序dllcnsltest.exe

  二、显式调用

[1] [2] 下一页


Tag: 动态链接库



文章整理:iocblog
版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。