使用Boost的DLL庫管理動態鏈接庫


Boost 1.61新增了一個DLL庫,跟Qt中的QLibrary類似,提供了跨平台的動態庫鏈接庫加載、調用等功能。
http://www.boost.org/users/history/version_1_61_0.html

編寫一個Test.dll,導出方法Add

 

[cpp]  view plain  copy
 
 在CODE上查看代碼片派生到我的代碼片
  1. INT WINAPI Add(INT x, INT y)    
  2. {    
  3.     return x + y;    
  4. }  


加載、檢查導出方法是否存在、調用方法、卸載應該是最常用的功能了。

 

 

[cpp]  view plain  copy
 
 在CODE上查看代碼片派生到我的代碼片
  1. int main()    
  2. {    
  3.     auto libPath = "D:\\Test.dll";    
  4.     
  5.     boost::dll::shared_library lib(libPath);    
  6.     lib.has("add");  // false。符號名稱是大小寫敏感的    
  7.     if (lib.has("Add"))    
  8.     {    
  9.         auto& symbol = lib.get<int __stdcall(int, int)>("Add");    
  10.         std::cout << symbol(5, 10) << std::endl;    
  11.     }    
  12.     
  13.     boost::dll::shared_library lib2;    
  14.     lib2.load(libPath);    
  15.     if (lib2.is_loaded())    
  16.     {    
  17.         auto& symbol = lib.get<int __stdcall(int, int)>("Add");    
  18.         std::cout << symbol(3, 5) << std::endl;    
  19.         lib2.unload();    
  20.     }    
  21.     
  22.     system("pause");    
  23.     return 0;    
  24. }   

 

http://blog.csdn.net/aqtata/article/details/51780423


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM