__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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章