| Home | Libraries | People | FAQ | More

## Function template import_mangled

boost::dll::experimental::import_mangled

## Synopsis

    // In header: <boost/dll/import_mangled.hpp>

    template<class ... Args>
      BOOST_DLL_BEGIN_MODULE_EXPORT result_type
      import_mangled(const boost::dll::fs::path & lib, const char * name,
                     load_mode::type mode = load_mode::default_mode);

## Description

Returns callable object or std::shared_ptr<T> (boost::shared_ptr<T> if BOOST_DLL_USE_BOOST_SHARED_PTR is defined) that holds the symbol imported from the loaded library. Returned value refcounts usage of the loaded shared library, so that it won't get unload until all copies of return value are not destroyed.

For importing symbols by alias names use boost::dll::import_alias method.

Examples:

    std::function<int(int)> f = import_mangled<int(int)>("test_lib.so", "integer_func_name");

    auto f_cpp11 = import_mangled<int(int)>("test_lib.so", "integer_func_name");

    std::shared_ptr<int> i = import_mangled<int>("test_lib.so", "integer_name");

Additionally you can also import overloaded symbols, including member-functions.

    auto fp = import_mangled<void(int), void(double)>("test_lib.so", "func");

    auto fp = import_mangled<my_class, void(int), void(double)>("test_lib.so", "func");

If qualified member-functions are needed, this can be set by repeating the class name with const or volatile. All following signatures after the redifintion will use this, i.e. the latest.

- *

      auto fp = import_mangled<my_class, void(int), void(double),
                               const my_class, void(int), void(double)>("test_lib.so", "func");

Template parameter T: Type of the symbol that we are going to import. Must be explicitly specified.

xmlonly <link linkend='boost.dll.fs.system_error'>boost::dll::fs::system_error</link> if symbol does not exist or if the DLL/DSO was not loaded. Overload that accepts path also throws std::bad_alloc in case of insufficient memory.

Parameters: |
`lib` | Path to shared library or shared library to load function from.
`name` | Null-terminated C or C++ mangled name of the function to import. Can handle std::string, char*, const char*.
`mode` | An mode that will be used on library load.
Returns: | callable object if T is a function type, or std::shared_ptr<T> (boost::shared_ptr<T> if BOOST_DLL_USE_BOOST_SHARED_PTR is defined) if T is an object type.
Throws: |