DLL学习3

上两篇,虽然已经导出了DLL库,也在客户程序中引用了,但注意,这里是同一个人编写DLL和客户端程序.更多的时候,是别人使用你的DLL库,这时候,别人不知道如何使用你DLL库.所以要加一下头文件.提供DLL导出函数原型的声明及函数的有关注释文档.

DLL1.h

_declspec(dllimport) int add(int a, int b);

_declspec(dllimport) int subtract(int a, int b);

 

这个DLL1.h是给该DLL客户端,即调用该DLL的程序使用的,因此使用的时dllimport

 

在DllTest中

#include "DLL1.h"

_________________________________________________

改造DLL1.h,使其不仅能够为调用动态链接库的客户端程序服务,同时也能够由动态链接库程序自身来使用.

#ifdef DLL1_API

#else

#define DLL1_API _declspec(dllimport)

//客户程序引用此.h文件时,没有定义DLL1_API,所以被定义成dllimport

#endif

 

DLL1_API int add(int a, int b);

DLL1_API int subtract(int a, int b);

 

如果定义了DLL1_API,那么就不再定义了,如果没有定义,

就把DLL1_API定义为_declspec(dllimport)

 

在DLL1.cpp文件中,

#define DLL1_API _declspec(dllexport) //先被定义成dllexport了.

#include "DLL1.h"

 

int add(int a, int b)

{

  return a + b;

}

 

int subtract(int a, int b)

{

  return a - b;

}

 

在程序编译时,头文件不参与编译,源文件单独编译.

DLL内的函数和数据,对DLL来说是导出,对客户端程序来说是导入.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值