__declspec(dllimport)与__declspec(dllexport)

   __declspec(dllimport)与(dllexport)以为有什么区别,但无论声明是哪一个,或者在调用的时候故意指定不同的方式,调用都可以成功。

   当动态链接库没有使用extern "C"的时候,使用Dependency 查看的时候为?Test@@YAXXZ。这个时候使用LoadLibray("xx")-GetProcAddress()-FreeLibaray()是不能成功调用函数的。无法找到函数的入口地址。只能通过lib +头文件 或lib+extern 函数原型的方式调用。

   加上extern "C"后,函数形式为 Test 非常的整洁。此时可以使用多种方法成功调用。

 

------------------------------------------------------------------------------------

如何从dll文件导出对应的lib文件?  
   
  Visual   C++   开发工具提供了两个命令行工具,一个是dumpbin.exe,另一个是lib.exe。利用这两个工具即可从dll导出其对应的lib。  
   
  1、在命令行执行:  
  dumpbin   /exports   yourdll.dll   >   yourdll.def  
   
  2、编辑   yourdll.def   文件,使之格式与.def文件格式一致。比如:  
   
  EXPORTS;  
                fn1;  
                fn2;  
   
  3、在命令行执行:  
  lib   /def:yourdll.def   /machine:i386   /out:yourdll.lib

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值