...one of the most highly
regarded and expertly designed C++ library projects in the
world.
— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards
boost::dll::import_symbol
// In header: <boost/dll/import.hpp> template<typename T> result_type import_symbol(const boost::dll::fs::path & lib, const char * name, load_mode::type mode = load_mode::default_mode);
Returns callable object or boost::shared_ptr<T> 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.
This call will succeed if call to boost::dll::shared_library::has(const char* )
function with the same symbol name returned true
.
For importing symbols by alias names use boost::dll::import_alias method.
Examples:
boost::function<int(int)> f = import_symbol<int(int)>("test_lib.so", "integer_func_name"); auto f_cpp11 = import_symbol<int(int)>("test_lib.so", "integer_func_name");
boost::shared_ptr<int> i = import_symbol<int>("test_lib.so", "integer_name");
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: |
|
||||||
Returns: |
callable object if T is a function type, or boost::shared_ptr<T> if T is an object type. |
||||||
Throws: |