| 1 | // Copyright 2014 Renato Tegon Forti, Antony Polukhin. |
|---|---|
| 2 | // Copyright Antony Polukhin, 2015-2024. |
| 3 | // |
| 4 | // Distributed under the Boost Software License, Version 1.0. |
| 5 | // (See accompanying file LICENSE_1_0.txt |
| 6 | // or copy at http://www.boost.org/LICENSE_1_0.txt) |
| 7 | |
| 8 | // MinGW related workaround |
| 9 | #define BOOST_DLL_FORCE_ALIAS_INSTANTIATION |
| 10 | |
| 11 | //[plugcpp_my_plugin_load_self |
| 12 | #include <boost/dll/shared_library.hpp> // for shared_library |
| 13 | #include <boost/dll/runtime_symbol_info.hpp> // for program_location() |
| 14 | #include "static_plugin.hpp" // without this headers some compilers may optimize out the `create_plugin` symbol |
| 15 | #include <boost/function.hpp> |
| 16 | #include <iostream> |
| 17 | |
| 18 | namespace dll = boost::dll; |
| 19 | |
| 20 | int main() { |
| 21 | dll::shared_library self(dll::program_location()); |
| 22 | |
| 23 | std::cout << "Call function"<< std::endl; |
| 24 | boost::function<boost::shared_ptr<my_plugin_api>()> creator |
| 25 | = self.get_alias<boost::shared_ptr<my_plugin_api>()>(alias_name: "create_plugin"); |
| 26 | |
| 27 | std::cout << "Computed Value: "<< creator()->calculate(x: 2, y: 2) << std::endl; |
| 28 | //<- |
| 29 | { |
| 30 | // This block is invisible for Quickbook documentation |
| 31 | float res = creator()->calculate(x: 10, y: 10); |
| 32 | if (!(res > -0.0001 && res < 0.00001)) { |
| 33 | throw std::runtime_error("Failed check: res > -0.0001 && res < 0.00001"); |
| 34 | } |
| 35 | } |
| 36 | //-> |
| 37 | } |
| 38 | |
| 39 | //] |
| 40 |
