__declspec(dllimport)与__declspec(dllexport)

来源:互联网 发布:js手机拍照裁剪 编辑:程序博客网 时间:2024/05/16 14:37

   __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

原创粉丝点击