VS开发C++Dll的一些有趣问题

在用VS的C++开发dll的过程中,为了使暴露函数清楚明了,一般采用Def文件来写明暴露函数名称。

Def文件一般格式如下:

; ***.def : 声明 DLL 的模块参数。

 

LIBRARY ***

EXPORTS

    ; 此处可以是显式导出

    Fun1 @1

    Fun2 @2

Fun3 @3

***一般代表dll文件名称。首行中; ***.def,可以任意写名称。第三行 LIBRARY ***的名称却不可随意乱写。一定要与dll名称相同,且不用写dll或lib尾缀。

其实,LIBRARY后是可以写尾缀的。在一种情况下还必须写尾缀:那就是有“.”的情况下,如dll名称为:ABCv2.1,如果在DEF文件中写成:LIBRARY “ABCv2.1”,那么恭喜你,调试程序时,会提示,找不到ABCv2.1文件。微软将“.1”当作了尾缀,这种情况有两种解决办法。

  1. 将DEF文件中的第三行,改写为LIBRARY “ABCv2.1.dll”
  2. 直接去掉LIBRARY后的库名称。

推荐第2种,这样无论是D版或R版,都不用再改文件了。不过,在有的版本编译器中,不写库名称是不能通过的,那就请使用第一种。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值