码迷,mamicode.com
首页 > 编程语言 > 详细

VC++6.0 动态库的创建与调用(非MFC的dll)

时间:2015-05-05 10:27:46      阅读:309      评论:0      收藏:0      [点我收藏+]

标签:

     非MFC动态库的创建。。。

一个lib.cpp,一个lib.h

 

/*lib.h*/  
#ifndef LIB_H  
#define LIB_H    
//声明add为dll的导出函数.  
extern "C" int _declspec(dllexport)add(int x,int y);  
#endif  

 

   也可以加上def文件 

 

; lib.def : 导出DLL函数     
    
LIBRARY DllTestDef  
    
EXPORTS     
add @ 1  

 

  

非MFc动态库的调用

1.静态调用

//静态的调用dll动态库,已将dll和lib文件放在相应的工作路径下了  
#include <STDIO.H>  
#pragma comment(lib,"dllTEST.lib")//..告诉编译器与dll相关的lib文件放在哪。  
  
extern "C"_declspec(dllimport)add(int x,int y);//声明导入函数  
  
int main()  
{  
    int result=add(2,3);  
    printf("2+3=%d \n",result);  
      
    return 0;  
}  

  2.动态调用

//动态的调用dll动态链接库.  
//只需要将dll放在相应的工作目录下即可  
#include<stdio.h>  
#include<windows.h>  
//定义一个与add函数参数类型和返回指针类型均相同的函数指针类型.  
//随后在main函数中实例化  
typedef int(*lpAddFun)(int,int);//宏定义函数指针类型  
  
int main()  
{  
    HINSTANCE hDLL;//DLL句柄  
    lpAddFun addFun;//实例化上面的函数指针类型  
    hDLL=LoadLibrary("./dllTEST.dll");//动态的加载DLL模块,并将DLL的模块句柄给hDLL.  
    if(hDLL!=NULL)  
    {  
        addFun=(lpAddFun)GetProcAddress(hDLL,"add");//将DLL模块中的add函数的地址给addFun  
        if(addFun!=NULL)  
        {  
            int result=addFun(2,3);//通过addFun来调用add函数  
              
            printf("2+3= %d \n",result);  
        }  
          
        FreeLibrary(hDLL);//将DLL动态模块卸载  
    }     
    return 0;  
      
} 

  

  

 

VC++6.0 动态库的创建与调用(非MFC的dll)

标签:

原文地址:http://www.cnblogs.com/yanliang12138/p/4478308.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!