使用Boost的DLL库管理动态链接库(类似于Qt中的QLibrary)

时间:2024-05-01 10:48:28

Boost 1.61新增了一个DLL库,跟Qt中的QLibrary类似,提供了跨平台的动态库链接库加载、调用等功能。
http://www.boost.org/users/history/version_1_61_0.html

编写一个Test.dll,导出方法Add

  1. INT WINAPI Add(INT x, INT y)
  2. {
  3. return x + y;
  4. }

加载、检查导出方法是否存在、调用方法、卸载应该是最常用的功能了。

    1. int main()
    2. {
    3. auto libPath = "D:\\Test.dll";
    4. boost::dll::shared_library lib(libPath);
    5. lib.has("add");  // false。符号名称是大小写敏感的
    6. if (lib.has("Add"))
    7. {
    8. auto& symbol = lib.get<int __stdcall(int, int)>("Add");
    9. std::cout << symbol(5, 10) << std::endl;
    10. }
    11. boost::dll::shared_library lib2;
    12. lib2.load(libPath);
    13. if (lib2.is_loaded())
    14. {
    15. auto& symbol = lib.get<int __stdcall(int, int)>("Add");
    16. std::cout << symbol(3, 5) << std::endl;
    17. lib2.unload();
    18. }
    19. system("pause");
    20. return 0;
    21. }

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