简单的dll创建

首先在VC编译器中创建一个dll project,以一个简单的例子,这个例子是windows环境下的dll引用:

  Main.c

#include <stdio.h>

#include <windows.h>

typedef int(*lpAddFun)(int, int); //宏定义函数指针类型

int main(int argc, char *argv[])

{

       HINSTANCE hDll; //DLL句柄

       lpAddFun addFun; //函数指针

       hDll = LoadLibrary("test.dll");

       if (hDll != NULL)

       {

              addFun = (lpAddFun)GetProcAddress(hDll, "add");

              if (addFun != NULL)

              {

                     int result = addFun(2, 3);

                     printf("%d\n", result);

              }

              FreeLibrary(hDll);

       }

       return 0;

}

Dll.h

 

#ifndef LIB_H

#define LIB_H

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

#endif

Dll.c

 

#include "dll.h"

int add(int x, int y)

{

       return x + y;

}

 

上面是一个通过调用动态链接库的例子,通过编译成dll,代码中DLL加载-DLL函数地址获取-DLL释放的顺序来完成程序库的调用。

extern "C" int __declspec(dllexport)add(int x, int y);:声明动态库里面的函数是一种导出函数的方式,一般动态库里面的函数有两种方式,有内部函数(只供程序内部调用)和导出函数(程序外部可以调用)两种。

typedef int(*lpAddFun)(int, int):获取函数里面的地址的函数指针。

LoadLibrary("test.dll");:加载动态连接库。

GetProcAddress(hDll, "add");:获取动态链接库里面add函数的地址。

FreeLibrary(hDll);:释放加载的动态链接库,之后将不可以应用函数add。

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值