Function import_mangled
boost::dll::experimental::import_mangled
Synopsis
template<class... Args>
result_type import_mangled(const boost::filesystem::path & lib,
const char * name,
load_mode::type mode = load_mode::default_mode);
template<class... Args>
result_type import_mangled(const boost::filesystem::path & lib,
const std::string & name,
load_mode::type mode = load_mode::default_mode);
template<class... Args>
result_type import_mangled(const smart_library & lib, const char * name);
template<class... Args>
result_type import_mangled(const smart_library & lib,
const std::string & name);
template<class... Args>
result_type import_mangled(smart_library && lib, const char * name);
template<class... Args>
result_type import_mangled(smart_library && lib, const std::string & name);
template<class... Args>
result_type import_mangled(const shared_library & lib, const char * name);
template<class... Args>
result_type import_mangled(const shared_library & lib,
const std::string & name);
template<class... Args>
result_type import_mangled(shared_library && lib, const char * name);
template<class... Args>
result_type import_mangled(shared_library && lib, const std::string & name);
Description
Возвращает позывной объект или усилитель::shared_ptrкоторый содержит символ, импортированный из загруженной библиотеки. Возвращенное значение пересчитывает использование загруженной общей библиотеки, так что она не будет разгружена, пока все копии обратного значения не будут уничтожены.
Для импорта символовпсевдонимыимена используютboost::dll::import_aliasМетодика.
Примеры:
boost::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");
boost::shared_ptr<int> i = import_mangled<int>("test_lib.so", "integer_name");
Кроме того, вы можете импортировать перегруженные символы, включая функции-члены.
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");
Если нужны квалифицированные функции-члены, это может быть установлено повторением названия класса с конст или летучим. Все последующие подписи после переоформления будут использовать это, т.е. последние.
*
<autofp=import_mangled<my_class,void(int),void(double),
constmy_class,void(int),void(double)>("test_lib.so","func");
>
ШаблонпараметрТ:Тип символа, который мы собираемся импортировать. Должен быть четко указан.
Параметры: | <lib > | Путь к общей библиотеке или к общей библиотеке для загрузки функции. | <mode > | Режим, который будет использоваться при загрузке библиотеки. | <name > | Нуль-конец C или C++ искалеченное имя функции для импорта. Может обрабатывать std::string, char*, const char*. |
|
Возвращение: | Призывной объект, если T является типом функции, или усилитель::shared_ptrесли T является типом объекта. |
Броски: | Усиление::system::system_error, если символ не существует или если DLL/DSO не был загружен. Перегрузка, которая принимает путь, также бросает std::bad_alloc в случае недостаточной памяти. |