Function import
boost::dll::import
Synopsis
template<typename T>
result_type import(const boost::filesystem::path & lib, const char * name,
load_mode::type mode = load_mode::default_mode);
template<typename T>
result_type import(const boost::filesystem::path & lib,
const std::string & name,
load_mode::type mode = load_mode::default_mode);
template<typename T>
result_type import(const shared_library & lib, const char * name);
template<typename T>
result_type import(const shared_library & lib, const std::string & name);
template<typename T>
result_type import(shared_library && lib, const char * name);
template<typename T>
result_type import(shared_library && lib, const std::string & name);
Description
Возвращает позывной объект или усилитель::shared_ptr который содержит символ, импортированный из загруженной библиотеки. Возвращенное значение пересчитывает использование загруженной общей библиотеки, так что она не будет разгружена, пока все копии обратного значения не будут уничтожены.
Этот вызов будет успешным, если вызов boost::dll::shared_library::has(const char*)
функции с тем же именем символа вернулся true
.
Для импорта символов по alias используют метод boost::dll::import_alias.
Примеры:
boost::function<int(int)> f = import<int(int)>("test_lib.so", "integer_func_name");
auto f_cpp11 = import<int(int)>("test_lib.so", "integer_func_name");
boost::shared_ptr<int> i = import<int>("test_lib.so", "integer_name");
TemplateпараметрT: Тип символа, который мы собираемся импортировать. Должен быть четко указан.
Параметры: |
lib
|
Путь к общей библиотеке или к общей библиотеке для загрузки функции. |
режим
|
Режим, который будет использоваться при загрузке библиотеки. |
name
|
Нулевое C или C++ искалеченное имя функции для импорта. Может обрабатывать std::string, char*, const char*. |
|
Возврат: |
вызывающий объект, если T - тип функции, или усилитель::shared_ptr< T> если T — тип объекта. |
Броски: |
усиление::system::system_error, если символ не существует или если DLL/DSO не был загружен. Перегрузка, которая принимает путь, также бросает std::bad_alloc в случае недостаточной памяти. |