1<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 2<html> 3<head> 4<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 5<title>Class shared_library</title> 6<link rel="stylesheet" href="../../../../doc/src/boostbook.css" type="text/css"> 7<meta name="generator" content="DocBook XSL Stylesheets V1.79.1"> 8<link rel="home" href="../../index.html" title="The Boost C++ Libraries BoostBook Documentation Subset"> 9<link rel="up" href="../../boost_dll/reference.html#header.boost.dll.shared_library_hpp" title="Header <boost/dll/shared_library.hpp>"> 10<link rel="prev" href="program_location.html" title="Function program_location"> 11<link rel="next" href="load_mode/type.html" title="Type type"> 12</head> 13<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> 14<table cellpadding="2" width="100%"><tr> 15<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../boost.png"></td> 16<td align="center"><a href="../../../../index.html">Home</a></td> 17<td align="center"><a href="../../../../libs/libraries.htm">Libraries</a></td> 18<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td> 19<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td> 20<td align="center"><a href="../../../../more/index.htm">More</a></td> 21</tr></table> 22<hr> 23<div class="spirit-nav"> 24<a accesskey="p" href="program_location.html"><img src="../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_dll/reference.html#header.boost.dll.shared_library_hpp"><img src="../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="load_mode/type.html"><img src="../../../../doc/src/images/next.png" alt="Next"></a> 25</div> 26<div class="refentry"> 27<a name="boost.dll.shared_library"></a><div class="titlepage"></div> 28<div class="refnamediv"> 29<h2><span class="refentrytitle">Class shared_library</span></h2> 30<p>boost::dll::shared_library — This class can be used to load a Dynamic link libraries (DLL's) or Shared Libraries, also know as dynamic shared objects (DSO's) and get their exported symbols (functions and variables). </p> 31</div> 32<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2> 33<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: <<a class="link" href="../../boost_dll/reference.html#header.boost.dll.shared_library_hpp" title="Header <boost/dll/shared_library.hpp>">boost/dll/shared_library.hpp</a>> 34 35</span> 36<span class="keyword">class</span> <a class="link" href="shared_library.html" title="Class shared_library">shared_library</a> <span class="special">{</span> 37<span class="keyword">public</span><span class="special">:</span> 38 <span class="comment">// types</span> 39 <span class="keyword">typedef</span> <span class="identifier">platform_specific</span> <a name="boost.dll.shared_library.native_handle_t"></a><span class="identifier">native_handle_t</span><span class="special">;</span> 40 41 <span class="comment">// <a class="link" href="shared_library.html#boost.dll.shared_libraryconstruct-copy-destruct">construct/copy/destruct</a></span> 42 <a class="link" href="shared_library.html#idm45168072559344-bb"><span class="identifier">shared_library</span></a><span class="special">(</span><span class="special">)</span> <span class="keyword">noexcept</span><span class="special">;</span> 43 <a class="link" href="shared_library.html#idm45168072556736-bb"><span class="identifier">shared_library</span></a><span class="special">(</span><span class="keyword">const</span> <a class="link" href="shared_library.html" title="Class shared_library">shared_library</a> <span class="special">&</span><span class="special">)</span><span class="special">;</span> 44 <a class="link" href="shared_library.html#idm45168072552528-bb"><span class="identifier">shared_library</span></a><span class="special">(</span><span class="keyword">const</span> <a class="link" href="shared_library.html" title="Class shared_library">shared_library</a> <span class="special">&</span><span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">dll</span><span class="special">::</span><span class="identifier">fs</span><span class="special">::</span><span class="identifier">error_code</span> <span class="special">&</span><span class="special">)</span><span class="special">;</span> 45 <a class="link" href="shared_library.html#idm45168072546960-bb"><span class="identifier">shared_library</span></a><span class="special">(</span><a class="link" href="shared_library.html" title="Class shared_library">shared_library</a> <span class="special">&&</span><span class="special">)</span> <span class="keyword">noexcept</span><span class="special">;</span> 46 <span class="keyword">explicit</span> <a class="link" href="shared_library.html#idm45168072542896-bb"><span class="identifier">shared_library</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">dll</span><span class="special">::</span><span class="identifier">fs</span><span class="special">::</span><span class="identifier">path</span> <span class="special">&</span><span class="special">,</span> 47 <span class="identifier">load_mode</span><span class="special">::</span><span class="identifier">type</span> <span class="special">=</span> <span class="identifier">load_mode</span><span class="special">::</span><span class="identifier">default_mode</span><span class="special">)</span><span class="special">;</span> 48 <a class="link" href="shared_library.html#idm45168072537696-bb"><span class="identifier">shared_library</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">dll</span><span class="special">::</span><span class="identifier">fs</span><span class="special">::</span><span class="identifier">path</span> <span class="special">&</span><span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">dll</span><span class="special">::</span><span class="identifier">fs</span><span class="special">::</span><span class="identifier">error_code</span> <span class="special">&</span><span class="special">,</span> 49 <span class="identifier">load_mode</span><span class="special">::</span><span class="identifier">type</span> <span class="special">=</span> <span class="identifier">load_mode</span><span class="special">::</span><span class="identifier">default_mode</span><span class="special">)</span><span class="special">;</span> 50 <a class="link" href="shared_library.html#idm45168072531424-bb"><span class="identifier">shared_library</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">dll</span><span class="special">::</span><span class="identifier">fs</span><span class="special">::</span><span class="identifier">path</span> <span class="special">&</span><span class="special">,</span> <span class="identifier">load_mode</span><span class="special">::</span><span class="identifier">type</span><span class="special">,</span> 51 <span class="identifier">boost</span><span class="special">::</span><span class="identifier">dll</span><span class="special">::</span><span class="identifier">fs</span><span class="special">::</span><span class="identifier">error_code</span> <span class="special">&</span><span class="special">)</span><span class="special">;</span> 52 <a class="link" href="shared_library.html" title="Class shared_library">shared_library</a> <span class="special">&</span> <a class="link" href="shared_library.html#idm45168072528496-bb"><span class="keyword">operator</span><span class="special">=</span></a><span class="special">(</span><span class="keyword">const</span> <a class="link" href="shared_library.html" title="Class shared_library">shared_library</a> <span class="special">&</span><span class="special">)</span><span class="special">;</span> 53 <a class="link" href="shared_library.html" title="Class shared_library">shared_library</a> <span class="special">&</span> <a class="link" href="shared_library.html#idm45168072524112-bb"><span class="keyword">operator</span><span class="special">=</span></a><span class="special">(</span><a class="link" href="shared_library.html" title="Class shared_library">shared_library</a> <span class="special">&&</span><span class="special">)</span> <span class="keyword">noexcept</span><span class="special">;</span> 54 <a class="link" href="shared_library.html#idm45168072519440-bb"><span class="special">~</span><span class="identifier">shared_library</span></a><span class="special">(</span><span class="special">)</span><span class="special">;</span> 55 56 <span class="comment">// <a class="link" href="shared_library.html#idm45168072651536-bb">public member functions</a></span> 57 <a class="link" href="shared_library.html" title="Class shared_library">shared_library</a> <span class="special">&</span> 58 <a class="link" href="shared_library.html#idm45168072650976-bb"><span class="identifier">assign</span></a><span class="special">(</span><span class="keyword">const</span> <a class="link" href="shared_library.html" title="Class shared_library">shared_library</a> <span class="special">&</span><span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">dll</span><span class="special">::</span><span class="identifier">fs</span><span class="special">::</span><span class="identifier">error_code</span> <span class="special">&</span><span class="special">)</span><span class="special">;</span> 59 <a class="link" href="shared_library.html" title="Class shared_library">shared_library</a> <span class="special">&</span> <a class="link" href="shared_library.html#idm45168072645024-bb"><span class="identifier">assign</span></a><span class="special">(</span><span class="keyword">const</span> <a class="link" href="shared_library.html" title="Class shared_library">shared_library</a> <span class="special">&</span><span class="special">)</span><span class="special">;</span> 60 <span class="keyword">void</span> <a class="link" href="shared_library.html#idm45168072640416-bb"><span class="identifier">load</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">dll</span><span class="special">::</span><span class="identifier">fs</span><span class="special">::</span><span class="identifier">path</span> <span class="special">&</span><span class="special">,</span> 61 <span class="identifier">load_mode</span><span class="special">::</span><span class="identifier">type</span> <span class="special">=</span> <span class="identifier">load_mode</span><span class="special">::</span><span class="identifier">default_mode</span><span class="special">)</span><span class="special">;</span> 62 <span class="keyword">void</span> <a class="link" href="shared_library.html#idm45168072634528-bb"><span class="identifier">load</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">dll</span><span class="special">::</span><span class="identifier">fs</span><span class="special">::</span><span class="identifier">path</span> <span class="special">&</span><span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">dll</span><span class="special">::</span><span class="identifier">fs</span><span class="special">::</span><span class="identifier">error_code</span> <span class="special">&</span><span class="special">,</span> 63 <span class="identifier">load_mode</span><span class="special">::</span><span class="identifier">type</span> <span class="special">=</span> <span class="identifier">load_mode</span><span class="special">::</span><span class="identifier">default_mode</span><span class="special">)</span><span class="special">;</span> 64 <span class="keyword">void</span> <a class="link" href="shared_library.html#idm45168072627296-bb"><span class="identifier">load</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">dll</span><span class="special">::</span><span class="identifier">fs</span><span class="special">::</span><span class="identifier">path</span> <span class="special">&</span><span class="special">,</span> <span class="identifier">load_mode</span><span class="special">::</span><span class="identifier">type</span><span class="special">,</span> 65 <span class="identifier">boost</span><span class="special">::</span><span class="identifier">dll</span><span class="special">::</span><span class="identifier">fs</span><span class="special">::</span><span class="identifier">error_code</span> <span class="special">&</span><span class="special">)</span><span class="special">;</span> 66 <span class="keyword">void</span> <a class="link" href="shared_library.html#idm45168072623808-bb"><span class="identifier">unload</span></a><span class="special">(</span><span class="special">)</span> <span class="keyword">noexcept</span><span class="special">;</span> 67 <span class="keyword">bool</span> <a class="link" href="shared_library.html#idm45168072620512-bb"><span class="identifier">is_loaded</span></a><span class="special">(</span><span class="special">)</span> <span class="keyword">const</span> <span class="keyword">noexcept</span><span class="special">;</span> 68 <span class="keyword">bool</span> <a class="link" href="shared_library.html#idm45168072617376-bb"><span class="keyword">operator</span><span class="special">!</span></a><span class="special">(</span><span class="special">)</span> <span class="keyword">const</span> <span class="keyword">noexcept</span><span class="special">;</span> 69 <span class="keyword">explicit</span> <a class="link" href="shared_library.html#idm45168072614240-bb"><span class="keyword">operator</span> <span class="keyword">bool</span></a><span class="special">(</span><span class="special">)</span> <span class="keyword">const</span> <span class="keyword">noexcept</span><span class="special">;</span> 70 <span class="keyword">bool</span> <a class="link" href="shared_library.html#idm45168072610832-bb"><span class="identifier">has</span></a><span class="special">(</span><span class="keyword">const</span> <span class="keyword">char</span> <span class="special">*</span><span class="special">)</span> <span class="keyword">const</span> <span class="keyword">noexcept</span><span class="special">;</span> 71 <span class="keyword">bool</span> <a class="link" href="shared_library.html#idm45168072606144-bb"><span class="identifier">has</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="special">&</span><span class="special">)</span> <span class="keyword">const</span> <span class="keyword">noexcept</span><span class="special">;</span> 72 <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T<span class="special">></span> 73 <span class="identifier">boost</span><span class="special">::</span><span class="identifier">enable_if_c</span><span class="special"><</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_member_pointer</span><span class="special"><</span> <span class="identifier">T</span> <span class="special">></span><span class="special">::</span><span class="identifier">value</span><span class="special">||</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_reference</span><span class="special"><</span> <span class="identifier">T</span> <span class="special">></span><span class="special">::</span><span class="identifier">value</span><span class="special">,</span> <span class="identifier">T</span> <span class="special">></span><span class="special">::</span><span class="identifier">type</span> 74 <a class="link" href="shared_library.html#idm45168072603792-bb"><span class="identifier">get</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="special">&</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span> 75 <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T<span class="special">></span> 76 <span class="identifier">boost</span><span class="special">::</span><span class="identifier">disable_if_c</span><span class="special"><</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_member_pointer</span><span class="special"><</span> <span class="identifier">T</span> <span class="special">></span><span class="special">::</span><span class="identifier">value</span><span class="special">||</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_reference</span><span class="special"><</span> <span class="identifier">T</span> <span class="special">></span><span class="special">::</span><span class="identifier">value</span><span class="special">,</span> <span class="identifier">T</span> <span class="special">&</span> <span class="special">></span><span class="special">::</span><span class="identifier">type</span> 77 <a class="link" href="shared_library.html#idm45168072595696-bb"><span class="identifier">get</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="special">&</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span> 78 <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T<span class="special">></span> 79 <span class="identifier">boost</span><span class="special">::</span><span class="identifier">enable_if_c</span><span class="special"><</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_member_pointer</span><span class="special"><</span> <span class="identifier">T</span> <span class="special">></span><span class="special">::</span><span class="identifier">value</span><span class="special">||</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_reference</span><span class="special"><</span> <span class="identifier">T</span> <span class="special">></span><span class="special">::</span><span class="identifier">value</span><span class="special">,</span> <span class="identifier">T</span> <span class="special">></span><span class="special">::</span><span class="identifier">type</span> 80 <a class="link" href="shared_library.html#idm45168072592416-bb"><span class="identifier">get</span></a><span class="special">(</span><span class="keyword">const</span> <span class="keyword">char</span> <span class="special">*</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span> 81 <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T<span class="special">></span> 82 <span class="identifier">boost</span><span class="special">::</span><span class="identifier">disable_if_c</span><span class="special"><</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_member_pointer</span><span class="special"><</span> <span class="identifier">T</span> <span class="special">></span><span class="special">::</span><span class="identifier">value</span><span class="special">||</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_reference</span><span class="special"><</span> <span class="identifier">T</span> <span class="special">></span><span class="special">::</span><span class="identifier">value</span><span class="special">,</span> <span class="identifier">T</span> <span class="special">&</span> <span class="special">></span><span class="special">::</span><span class="identifier">type</span> 83 <a class="link" href="shared_library.html#idm45168072589136-bb"><span class="identifier">get</span></a><span class="special">(</span><span class="keyword">const</span> <span class="keyword">char</span> <span class="special">*</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span> 84 <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T<span class="special">></span> <span class="identifier">T</span> <span class="special">&</span> <a class="link" href="shared_library.html#idm45168072585856-bb"><span class="identifier">get_alias</span></a><span class="special">(</span><span class="keyword">const</span> <span class="keyword">char</span> <span class="special">*</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span> 85 <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T<span class="special">></span> <span class="identifier">T</span> <span class="special">&</span> <a class="link" href="shared_library.html#idm45168072579472-bb"><span class="identifier">get_alias</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="special">&</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span> 86 <span class="identifier">native_handle_t</span> <a class="link" href="shared_library.html#idm45168072576272-bb"><span class="identifier">native</span></a><span class="special">(</span><span class="special">)</span> <span class="keyword">const</span> <span class="keyword">noexcept</span><span class="special">;</span> 87 <span class="identifier">boost</span><span class="special">::</span><span class="identifier">dll</span><span class="special">::</span><span class="identifier">fs</span><span class="special">::</span><span class="identifier">path</span> <a class="link" href="shared_library.html#idm45168072573824-bb"><span class="identifier">location</span></a><span class="special">(</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span> 88 <span class="identifier">boost</span><span class="special">::</span><span class="identifier">dll</span><span class="special">::</span><span class="identifier">fs</span><span class="special">::</span><span class="identifier">path</span> <a class="link" href="shared_library.html#idm45168072569328-bb"><span class="identifier">location</span></a><span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">dll</span><span class="special">::</span><span class="identifier">fs</span><span class="special">::</span><span class="identifier">error_code</span> <span class="special">&</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span> 89 <span class="keyword">void</span> <a class="link" href="shared_library.html#idm45168072563504-bb"><span class="identifier">swap</span></a><span class="special">(</span><a class="link" href="shared_library.html" title="Class shared_library">shared_library</a> <span class="special">&</span><span class="special">)</span> <span class="keyword">noexcept</span><span class="special">;</span> 90 91 <span class="comment">// <a class="link" href="shared_library.html#idm45168072517136-bb">public static functions</a></span> 92 <span class="keyword">static</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">dll</span><span class="special">::</span><span class="identifier">fs</span><span class="special">::</span><span class="identifier">path</span> <a class="link" href="shared_library.html#idm45168072516576-bb"><span class="identifier">suffix</span></a><span class="special">(</span><span class="special">)</span><span class="special">;</span> 93 <span class="keyword">static</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">dll</span><span class="special">::</span><span class="identifier">fs</span><span class="special">::</span><span class="identifier">path</span> <a class="link" href="shared_library.html#idm45168072514032-bb"><span class="identifier">decorate</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">dll</span><span class="special">::</span><span class="identifier">fs</span><span class="special">::</span><span class="identifier">path</span> <span class="special">&</span><span class="special">)</span><span class="special">;</span> 94<span class="special">}</span><span class="special">;</span></pre></div> 95<div class="refsect1"> 96<a name="id-1.3.15.8.2.6.4.4"></a><h2>Description</h2> 97<p><a class="link" href="shared_library.html" title="Class shared_library">shared_library</a> instances share reference count to an actual loaded DLL/DSO, so it is safe and memory efficient to have multiple instances of <a class="link" href="shared_library.html" title="Class shared_library">shared_library</a> referencing the same DLL/DSO even if those instances were loaded using different paths (relative + absolute) referencing the same object.</p> 98<p>On Linux/POSIX link with library "dl". "-fvisibility=hidden" flag is also recommended for use on Linux/POSIX. </p> 99<div class="refsect2"> 100<a name="id-1.3.15.8.2.6.4.4.4"></a><h3> 101<a name="boost.dll.shared_libraryconstruct-copy-destruct"></a><code class="computeroutput">shared_library</code> 102 public 103 construct/copy/destruct</h3> 104<div class="orderedlist"><ol class="orderedlist" type="1"> 105<li class="listitem"> 106<pre class="literallayout"><a name="idm45168072559344-bb"></a><span class="identifier">shared_library</span><span class="special">(</span><span class="special">)</span> <span class="keyword">noexcept</span><span class="special">;</span></pre> 107<p>Creates in anstance that does not reference any DLL/DSO.</p> 108<p> 109 110</p> 111<div class="variablelist"><table border="0" class="variablelist compact"> 112<colgroup> 113<col align="left" valign="top"> 114<col> 115</colgroup> 116<tbody> 117<tr> 118<td><p><span class="term">Postconditions:</span></p></td> 119<td><p>this->is_loaded() returns false. </p></td> 120</tr> 121<tr> 122<td><p><span class="term">Throws:</span></p></td> 123<td>Nothing. </td> 124</tr> 125</tbody> 126</table></div> 127</li> 128<li class="listitem"> 129<pre class="literallayout"><a name="idm45168072556736-bb"></a><span class="identifier">shared_library</span><span class="special">(</span><span class="keyword">const</span> <a class="link" href="shared_library.html" title="Class shared_library">shared_library</a> <span class="special">&</span> lib<span class="special">)</span><span class="special">;</span></pre> 130<p>Copy constructor that increments the reference count of an underlying shared library. Same as calling constructor with <code class="computeroutput">lib.location()</code> parameter.</p> 131<p> 132 133 134</p> 135<div class="variablelist"><table border="0" class="variablelist compact"> 136<colgroup> 137<col align="left" valign="top"> 138<col> 139</colgroup> 140<tbody> 141<tr> 142<td><p><span class="term">Parameters:</span></p></td> 143<td><div class="variablelist"><table border="0" class="variablelist compact"> 144<colgroup> 145<col align="left" valign="top"> 146<col> 147</colgroup> 148<tbody><tr> 149<td><p><span class="term"><code class="computeroutput">lib</code></span></p></td> 150<td><p>A library to copy. </p></td> 151</tr></tbody> 152</table></div></td> 153</tr> 154<tr> 155<td><p><span class="term">Postconditions:</span></p></td> 156<td><p>lib == *this </p></td> 157</tr> 158<tr> 159<td><p><span class="term">Throws:</span></p></td> 160<td> </td> 161</tr> 162</tbody> 163</table></div> 164</li> 165<li class="listitem"> 166<pre class="literallayout"><a name="idm45168072552528-bb"></a><span class="identifier">shared_library</span><span class="special">(</span><span class="keyword">const</span> <a class="link" href="shared_library.html" title="Class shared_library">shared_library</a> <span class="special">&</span> lib<span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">dll</span><span class="special">::</span><span class="identifier">fs</span><span class="special">::</span><span class="identifier">error_code</span> <span class="special">&</span> ec<span class="special">)</span><span class="special">;</span></pre> 167<p>Copy constructor that increments the reference count of an underlying shared library. Same as calling constructor with <code class="computeroutput">lib.location(), ec</code> parameters.</p> 168<p> 169 170 171</p> 172<div class="variablelist"><table border="0" class="variablelist compact"> 173<colgroup> 174<col align="left" valign="top"> 175<col> 176</colgroup> 177<tbody> 178<tr> 179<td><p><span class="term">Parameters:</span></p></td> 180<td><div class="variablelist"><table border="0" class="variablelist compact"> 181<colgroup> 182<col align="left" valign="top"> 183<col> 184</colgroup> 185<tbody> 186<tr> 187<td><p><span class="term"><code class="computeroutput">ec</code></span></p></td> 188<td><p>Variable that will be set to the result of the operation. </p></td> 189</tr> 190<tr> 191<td><p><span class="term"><code class="computeroutput">lib</code></span></p></td> 192<td><p>A shared library to copy. </p></td> 193</tr> 194</tbody> 195</table></div></td> 196</tr> 197<tr> 198<td><p><span class="term">Postconditions:</span></p></td> 199<td><p>lib == *this </p></td> 200</tr> 201<tr> 202<td><p><span class="term">Throws:</span></p></td> 203<td>std::bad_alloc in case of insufficient memory. </td> 204</tr> 205</tbody> 206</table></div> 207</li> 208<li class="listitem"> 209<pre class="literallayout"><a name="idm45168072546960-bb"></a><span class="identifier">shared_library</span><span class="special">(</span><a class="link" href="shared_library.html" title="Class shared_library">shared_library</a> <span class="special">&&</span> lib<span class="special">)</span> <span class="keyword">noexcept</span><span class="special">;</span></pre> 210<p>Move constructor. Does not invalidate existing symbols and functions loaded from lib.</p> 211<p> 212 213 214</p> 215<div class="variablelist"><table border="0" class="variablelist compact"> 216<colgroup> 217<col align="left" valign="top"> 218<col> 219</colgroup> 220<tbody> 221<tr> 222<td><p><span class="term">Parameters:</span></p></td> 223<td><div class="variablelist"><table border="0" class="variablelist compact"> 224<colgroup> 225<col align="left" valign="top"> 226<col> 227</colgroup> 228<tbody><tr> 229<td><p><span class="term"><code class="computeroutput">lib</code></span></p></td> 230<td><p>A shared library to move from. </p></td> 231</tr></tbody> 232</table></div></td> 233</tr> 234<tr> 235<td><p><span class="term">Postconditions:</span></p></td> 236<td><p>lib.is_loaded() returns false, this->is_loaded() return true. </p></td> 237</tr> 238<tr> 239<td><p><span class="term">Throws:</span></p></td> 240<td>Nothing. </td> 241</tr> 242</tbody> 243</table></div> 244</li> 245<li class="listitem"> 246<pre class="literallayout"><span class="keyword">explicit</span> <a name="idm45168072542896-bb"></a><span class="identifier">shared_library</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">dll</span><span class="special">::</span><span class="identifier">fs</span><span class="special">::</span><span class="identifier">path</span> <span class="special">&</span> lib_path<span class="special">,</span> 247 <span class="identifier">load_mode</span><span class="special">::</span><span class="identifier">type</span> mode <span class="special">=</span> <span class="identifier">load_mode</span><span class="special">::</span><span class="identifier">default_mode</span><span class="special">)</span><span class="special">;</span></pre> 248<p>Loads a library by specified path with a specified mode.</p> 249<p> 250 251</p> 252<div class="variablelist"><table border="0" class="variablelist compact"> 253<colgroup> 254<col align="left" valign="top"> 255<col> 256</colgroup> 257<tbody> 258<tr> 259<td><p><span class="term">Parameters:</span></p></td> 260<td><div class="variablelist"><table border="0" class="variablelist compact"> 261<colgroup> 262<col align="left" valign="top"> 263<col> 264</colgroup> 265<tbody> 266<tr> 267<td><p><span class="term"><code class="computeroutput">lib_path</code></span></p></td> 268<td><p>Library file name. Can handle std::string, const char*, std::wstring, const wchar_t* or <a class="link" href="fs/path.html" title="Type definition path">boost::dll::fs::path</a>. </p></td> 269</tr> 270<tr> 271<td><p><span class="term"><code class="computeroutput">mode</code></span></p></td> 272<td><p>A mode that will be used on library load. </p></td> 273</tr> 274</tbody> 275</table></div></td> 276</tr> 277<tr> 278<td><p><span class="term">Throws:</span></p></td> 279<td> </td> 280</tr> 281</tbody> 282</table></div> 283</li> 284<li class="listitem"> 285<pre class="literallayout"><a name="idm45168072537696-bb"></a><span class="identifier">shared_library</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">dll</span><span class="special">::</span><span class="identifier">fs</span><span class="special">::</span><span class="identifier">path</span> <span class="special">&</span> lib_path<span class="special">,</span> 286 <span class="identifier">boost</span><span class="special">::</span><span class="identifier">dll</span><span class="special">::</span><span class="identifier">fs</span><span class="special">::</span><span class="identifier">error_code</span> <span class="special">&</span> ec<span class="special">,</span> 287 <span class="identifier">load_mode</span><span class="special">::</span><span class="identifier">type</span> mode <span class="special">=</span> <span class="identifier">load_mode</span><span class="special">::</span><span class="identifier">default_mode</span><span class="special">)</span><span class="special">;</span></pre> 288<p>Loads a library by specified path with a specified mode.</p> 289<p> 290 291</p> 292<div class="variablelist"><table border="0" class="variablelist compact"> 293<colgroup> 294<col align="left" valign="top"> 295<col> 296</colgroup> 297<tbody> 298<tr> 299<td><p><span class="term">Parameters:</span></p></td> 300<td><div class="variablelist"><table border="0" class="variablelist compact"> 301<colgroup> 302<col align="left" valign="top"> 303<col> 304</colgroup> 305<tbody> 306<tr> 307<td><p><span class="term"><code class="computeroutput">ec</code></span></p></td> 308<td><p>Variable that will be set to the result of the operation. </p></td> 309</tr> 310<tr> 311<td><p><span class="term"><code class="computeroutput">lib_path</code></span></p></td> 312<td><p>Library file name. Can handle std::string, const char*, std::wstring, const wchar_t* or <a class="link" href="fs/path.html" title="Type definition path">boost::dll::fs::path</a>. </p></td> 313</tr> 314<tr> 315<td><p><span class="term"><code class="computeroutput">mode</code></span></p></td> 316<td><p>A mode that will be used on library load. </p></td> 317</tr> 318</tbody> 319</table></div></td> 320</tr> 321<tr> 322<td><p><span class="term">Throws:</span></p></td> 323<td>std::bad_alloc in case of insufficient memory. </td> 324</tr> 325</tbody> 326</table></div> 327</li> 328<li class="listitem"> 329<pre class="literallayout"><a name="idm45168072531424-bb"></a><span class="identifier">shared_library</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">dll</span><span class="special">::</span><span class="identifier">fs</span><span class="special">::</span><span class="identifier">path</span> <span class="special">&</span> lib_path<span class="special">,</span> <span class="identifier">load_mode</span><span class="special">::</span><span class="identifier">type</span> mode<span class="special">,</span> 330 <span class="identifier">boost</span><span class="special">::</span><span class="identifier">dll</span><span class="special">::</span><span class="identifier">fs</span><span class="special">::</span><span class="identifier">error_code</span> <span class="special">&</span> ec<span class="special">)</span><span class="special">;</span></pre> 331<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p> 332</li> 333<li class="listitem"> 334<pre class="literallayout"><a class="link" href="shared_library.html" title="Class shared_library">shared_library</a> <span class="special">&</span> <a name="idm45168072528496-bb"></a><span class="keyword">operator</span><span class="special">=</span><span class="special">(</span><span class="keyword">const</span> <a class="link" href="shared_library.html" title="Class shared_library">shared_library</a> <span class="special">&</span> lib<span class="special">)</span><span class="special">;</span></pre> 335<p>Assignment operator. If this->is_loaded() then calls this->unload(). Does not invalidate existing symbols and functions loaded from lib.</p> 336<p> 337 338 339</p> 340<div class="variablelist"><table border="0" class="variablelist compact"> 341<colgroup> 342<col align="left" valign="top"> 343<col> 344</colgroup> 345<tbody> 346<tr> 347<td><p><span class="term">Parameters:</span></p></td> 348<td><div class="variablelist"><table border="0" class="variablelist compact"> 349<colgroup> 350<col align="left" valign="top"> 351<col> 352</colgroup> 353<tbody><tr> 354<td><p><span class="term"><code class="computeroutput">lib</code></span></p></td> 355<td><p>A shared library to assign from. </p></td> 356</tr></tbody> 357</table></div></td> 358</tr> 359<tr> 360<td><p><span class="term">Postconditions:</span></p></td> 361<td><p>lib == *this </p></td> 362</tr> 363<tr> 364<td><p><span class="term">Throws:</span></p></td> 365<td> </td> 366</tr> 367</tbody> 368</table></div> 369</li> 370<li class="listitem"> 371<pre class="literallayout"><a class="link" href="shared_library.html" title="Class shared_library">shared_library</a> <span class="special">&</span> <a name="idm45168072524112-bb"></a><span class="keyword">operator</span><span class="special">=</span><span class="special">(</span><a class="link" href="shared_library.html" title="Class shared_library">shared_library</a> <span class="special">&&</span> lib<span class="special">)</span> <span class="keyword">noexcept</span><span class="special">;</span></pre> 372<p>Move assignment operator. If this->is_loaded() then calls this->unload(). Does not invalidate existing symbols and functions loaded from lib.</p> 373<p> 374 375 376</p> 377<div class="variablelist"><table border="0" class="variablelist compact"> 378<colgroup> 379<col align="left" valign="top"> 380<col> 381</colgroup> 382<tbody> 383<tr> 384<td><p><span class="term">Parameters:</span></p></td> 385<td><div class="variablelist"><table border="0" class="variablelist compact"> 386<colgroup> 387<col align="left" valign="top"> 388<col> 389</colgroup> 390<tbody><tr> 391<td><p><span class="term"><code class="computeroutput">lib</code></span></p></td> 392<td><p>A library to move from. </p></td> 393</tr></tbody> 394</table></div></td> 395</tr> 396<tr> 397<td><p><span class="term">Postconditions:</span></p></td> 398<td><p>lib.is_loaded() returns false. </p></td> 399</tr> 400<tr> 401<td><p><span class="term">Throws:</span></p></td> 402<td>Nothing. </td> 403</tr> 404</tbody> 405</table></div> 406</li> 407<li class="listitem"> 408<pre class="literallayout"><a name="idm45168072519440-bb"></a><span class="special">~</span><span class="identifier">shared_library</span><span class="special">(</span><span class="special">)</span><span class="special">;</span></pre> 409<p>Destroys the object by calling <code class="computeroutput">unload()</code>. If library was loaded multiple times by different instances, the actual DLL/DSO won't be unloaded until there is at least one instance that references the DLL/DSO.</p> 410<p> 411</p> 412<div class="variablelist"><table border="0" class="variablelist compact"> 413<colgroup> 414<col align="left" valign="top"> 415<col> 416</colgroup> 417<tbody><tr> 418<td><p><span class="term">Throws:</span></p></td> 419<td>Nothing. </td> 420</tr></tbody> 421</table></div> 422</li> 423</ol></div> 424</div> 425<div class="refsect2"> 426<a name="id-1.3.15.8.2.6.4.4.5"></a><h3> 427<a name="idm45168072651536-bb"></a><code class="computeroutput">shared_library</code> public member functions</h3> 428<div class="orderedlist"><ol class="orderedlist" type="1"> 429<li class="listitem"> 430<pre class="literallayout"><a class="link" href="shared_library.html" title="Class shared_library">shared_library</a> <span class="special">&</span> 431<a name="idm45168072650976-bb"></a><span class="identifier">assign</span><span class="special">(</span><span class="keyword">const</span> <a class="link" href="shared_library.html" title="Class shared_library">shared_library</a> <span class="special">&</span> lib<span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">dll</span><span class="special">::</span><span class="identifier">fs</span><span class="special">::</span><span class="identifier">error_code</span> <span class="special">&</span> ec<span class="special">)</span><span class="special">;</span></pre> 432<p>Makes *this share the same shared object as lib. If *this is loaded, then unloads it.</p> 433<p> 434 435 436</p> 437<div class="variablelist"><table border="0" class="variablelist compact"> 438<colgroup> 439<col align="left" valign="top"> 440<col> 441</colgroup> 442<tbody> 443<tr> 444<td><p><span class="term">Parameters:</span></p></td> 445<td><div class="variablelist"><table border="0" class="variablelist compact"> 446<colgroup> 447<col align="left" valign="top"> 448<col> 449</colgroup> 450<tbody> 451<tr> 452<td><p><span class="term"><code class="computeroutput">ec</code></span></p></td> 453<td><p>Variable that will be set to the result of the operation. </p></td> 454</tr> 455<tr> 456<td><p><span class="term"><code class="computeroutput">lib</code></span></p></td> 457<td><p>A library to copy. </p></td> 458</tr> 459</tbody> 460</table></div></td> 461</tr> 462<tr> 463<td><p><span class="term">Postconditions:</span></p></td> 464<td><p>lib.location() == this->location(), lib == *this </p></td> 465</tr> 466<tr> 467<td><p><span class="term">Throws:</span></p></td> 468<td>std::bad_alloc in case of insufficient memory. </td> 469</tr> 470</tbody> 471</table></div> 472</li> 473<li class="listitem"> 474<pre class="literallayout"><a class="link" href="shared_library.html" title="Class shared_library">shared_library</a> <span class="special">&</span> <a name="idm45168072645024-bb"></a><span class="identifier">assign</span><span class="special">(</span><span class="keyword">const</span> <a class="link" href="shared_library.html" title="Class shared_library">shared_library</a> <span class="special">&</span> lib<span class="special">)</span><span class="special">;</span></pre> 475<p>Makes *this share the same shared object as lib. If *this is loaded, then unloads it.</p> 476<p> 477 478 479</p> 480<div class="variablelist"><table border="0" class="variablelist compact"> 481<colgroup> 482<col align="left" valign="top"> 483<col> 484</colgroup> 485<tbody> 486<tr> 487<td><p><span class="term">Parameters:</span></p></td> 488<td><div class="variablelist"><table border="0" class="variablelist compact"> 489<colgroup> 490<col align="left" valign="top"> 491<col> 492</colgroup> 493<tbody><tr> 494<td><p><span class="term"><code class="computeroutput">lib</code></span></p></td> 495<td><p>A library instance to assign from. </p></td> 496</tr></tbody> 497</table></div></td> 498</tr> 499<tr> 500<td><p><span class="term">Postconditions:</span></p></td> 501<td><p>lib.location() == this->location() </p></td> 502</tr> 503<tr> 504<td><p><span class="term">Throws:</span></p></td> 505<td> </td> 506</tr> 507</tbody> 508</table></div> 509</li> 510<li class="listitem"> 511<pre class="literallayout"><span class="keyword">void</span> <a name="idm45168072640416-bb"></a><span class="identifier">load</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">dll</span><span class="special">::</span><span class="identifier">fs</span><span class="special">::</span><span class="identifier">path</span> <span class="special">&</span> lib_path<span class="special">,</span> 512 <span class="identifier">load_mode</span><span class="special">::</span><span class="identifier">type</span> mode <span class="special">=</span> <span class="identifier">load_mode</span><span class="special">::</span><span class="identifier">default_mode</span><span class="special">)</span><span class="special">;</span></pre> 513<p>Loads a library by specified path with a specified mode.</p> 514<p>Note that if some library is already loaded in this instance, load will call unload() and then load the new provided library.</p> 515<p> 516 517</p> 518<div class="variablelist"><table border="0" class="variablelist compact"> 519<colgroup> 520<col align="left" valign="top"> 521<col> 522</colgroup> 523<tbody> 524<tr> 525<td><p><span class="term">Parameters:</span></p></td> 526<td><div class="variablelist"><table border="0" class="variablelist compact"> 527<colgroup> 528<col align="left" valign="top"> 529<col> 530</colgroup> 531<tbody> 532<tr> 533<td><p><span class="term"><code class="computeroutput">lib_path</code></span></p></td> 534<td><p>Library file name. Can handle std::string, const char*, std::wstring, const wchar_t* or <a class="link" href="fs/path.html" title="Type definition path">boost::dll::fs::path</a>. </p></td> 535</tr> 536<tr> 537<td><p><span class="term"><code class="computeroutput">mode</code></span></p></td> 538<td><p>A mode that will be used on library load. </p></td> 539</tr> 540</tbody> 541</table></div></td> 542</tr> 543<tr> 544<td><p><span class="term">Throws:</span></p></td> 545<td> </td> 546</tr> 547</tbody> 548</table></div> 549</li> 550<li class="listitem"> 551<pre class="literallayout"><span class="keyword">void</span> <a name="idm45168072634528-bb"></a><span class="identifier">load</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">dll</span><span class="special">::</span><span class="identifier">fs</span><span class="special">::</span><span class="identifier">path</span> <span class="special">&</span> lib_path<span class="special">,</span> 552 <span class="identifier">boost</span><span class="special">::</span><span class="identifier">dll</span><span class="special">::</span><span class="identifier">fs</span><span class="special">::</span><span class="identifier">error_code</span> <span class="special">&</span> ec<span class="special">,</span> 553 <span class="identifier">load_mode</span><span class="special">::</span><span class="identifier">type</span> mode <span class="special">=</span> <span class="identifier">load_mode</span><span class="special">::</span><span class="identifier">default_mode</span><span class="special">)</span><span class="special">;</span></pre> 554<p>Loads a library by specified path with a specified mode.</p> 555<p>Note that if some library is already loaded in this instance, load will call unload() and then load the new provided library.</p> 556<p> 557 558</p> 559<div class="variablelist"><table border="0" class="variablelist compact"> 560<colgroup> 561<col align="left" valign="top"> 562<col> 563</colgroup> 564<tbody> 565<tr> 566<td><p><span class="term">Parameters:</span></p></td> 567<td><div class="variablelist"><table border="0" class="variablelist compact"> 568<colgroup> 569<col align="left" valign="top"> 570<col> 571</colgroup> 572<tbody> 573<tr> 574<td><p><span class="term"><code class="computeroutput">ec</code></span></p></td> 575<td><p>Variable that will be set to the result of the operation. </p></td> 576</tr> 577<tr> 578<td><p><span class="term"><code class="computeroutput">lib_path</code></span></p></td> 579<td><p>Library file name. Can handle std::string, const char*, std::wstring, const wchar_t* or <a class="link" href="fs/path.html" title="Type definition path">boost::dll::fs::path</a>. </p></td> 580</tr> 581<tr> 582<td><p><span class="term"><code class="computeroutput">mode</code></span></p></td> 583<td><p>A mode that will be used on library load. </p></td> 584</tr> 585</tbody> 586</table></div></td> 587</tr> 588<tr> 589<td><p><span class="term">Throws:</span></p></td> 590<td>std::bad_alloc in case of insufficient memory. </td> 591</tr> 592</tbody> 593</table></div> 594</li> 595<li class="listitem"> 596<pre class="literallayout"><span class="keyword">void</span> <a name="idm45168072627296-bb"></a><span class="identifier">load</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">dll</span><span class="special">::</span><span class="identifier">fs</span><span class="special">::</span><span class="identifier">path</span> <span class="special">&</span> lib_path<span class="special">,</span> <span class="identifier">load_mode</span><span class="special">::</span><span class="identifier">type</span> mode<span class="special">,</span> 597 <span class="identifier">boost</span><span class="special">::</span><span class="identifier">dll</span><span class="special">::</span><span class="identifier">fs</span><span class="special">::</span><span class="identifier">error_code</span> <span class="special">&</span> ec<span class="special">)</span><span class="special">;</span></pre> 598<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p> 599</li> 600<li class="listitem"> 601<pre class="literallayout"><span class="keyword">void</span> <a name="idm45168072623808-bb"></a><span class="identifier">unload</span><span class="special">(</span><span class="special">)</span> <span class="keyword">noexcept</span><span class="special">;</span></pre> 602<p>Unloads a shared library. If library was loaded multiple times by different instances, the actual DLL/DSO won't be unloaded until there is at least one instance that references the DLL/DSO.</p> 603<p> 604 605</p> 606<div class="variablelist"><table border="0" class="variablelist compact"> 607<colgroup> 608<col align="left" valign="top"> 609<col> 610</colgroup> 611<tbody> 612<tr> 613<td><p><span class="term">Postconditions:</span></p></td> 614<td><p>this->is_loaded() returns false. </p></td> 615</tr> 616<tr> 617<td><p><span class="term">Throws:</span></p></td> 618<td>Nothing. </td> 619</tr> 620</tbody> 621</table></div> 622</li> 623<li class="listitem"> 624<pre class="literallayout"><span class="keyword">bool</span> <a name="idm45168072620512-bb"></a><span class="identifier">is_loaded</span><span class="special">(</span><span class="special">)</span> <span class="keyword">const</span> <span class="keyword">noexcept</span><span class="special">;</span></pre> 625<p>Check if an library is loaded.</p> 626<p> 627 628</p> 629<div class="variablelist"><table border="0" class="variablelist compact"> 630<colgroup> 631<col align="left" valign="top"> 632<col> 633</colgroup> 634<tbody> 635<tr> 636<td><p><span class="term">Returns:</span></p></td> 637<td><p>true if a library has been loaded. </p></td> 638</tr> 639<tr> 640<td><p><span class="term">Throws:</span></p></td> 641<td>Nothing. </td> 642</tr> 643</tbody> 644</table></div> 645</li> 646<li class="listitem"> 647<pre class="literallayout"><span class="keyword">bool</span> <a name="idm45168072617376-bb"></a><span class="keyword">operator</span><span class="special">!</span><span class="special">(</span><span class="special">)</span> <span class="keyword">const</span> <span class="keyword">noexcept</span><span class="special">;</span></pre> 648<p>Check if an library is not loaded.</p> 649<p> 650 651</p> 652<div class="variablelist"><table border="0" class="variablelist compact"> 653<colgroup> 654<col align="left" valign="top"> 655<col> 656</colgroup> 657<tbody> 658<tr> 659<td><p><span class="term">Returns:</span></p></td> 660<td><p>true if a library has not been loaded. </p></td> 661</tr> 662<tr> 663<td><p><span class="term">Throws:</span></p></td> 664<td>Nothing. </td> 665</tr> 666</tbody> 667</table></div> 668</li> 669<li class="listitem"> 670<pre class="literallayout"><span class="keyword">explicit</span> <a name="idm45168072614240-bb"></a><span class="keyword">operator</span> <span class="keyword">bool</span><span class="special">(</span><span class="special">)</span> <span class="keyword">const</span> <span class="keyword">noexcept</span><span class="special">;</span></pre> 671<p>Check if an library is loaded.</p> 672<p> 673 674</p> 675<div class="variablelist"><table border="0" class="variablelist compact"> 676<colgroup> 677<col align="left" valign="top"> 678<col> 679</colgroup> 680<tbody> 681<tr> 682<td><p><span class="term">Returns:</span></p></td> 683<td><p>true if a library has been loaded. </p></td> 684</tr> 685<tr> 686<td><p><span class="term">Throws:</span></p></td> 687<td>Nothing. </td> 688</tr> 689</tbody> 690</table></div> 691</li> 692<li class="listitem"> 693<pre class="literallayout"><span class="keyword">bool</span> <a name="idm45168072610832-bb"></a><span class="identifier">has</span><span class="special">(</span><span class="keyword">const</span> <span class="keyword">char</span> <span class="special">*</span> symbol_name<span class="special">)</span> <span class="keyword">const</span> <span class="keyword">noexcept</span><span class="special">;</span></pre> 694<p>Search for a given symbol on loaded library. Works for all symbols, including alias names.</p> 695<p> 696 697 698</p> 699<div class="variablelist"><table border="0" class="variablelist compact"> 700<colgroup> 701<col align="left" valign="top"> 702<col> 703</colgroup> 704<tbody> 705<tr> 706<td><p><span class="term">Parameters:</span></p></td> 707<td><div class="variablelist"><table border="0" class="variablelist compact"> 708<colgroup> 709<col align="left" valign="top"> 710<col> 711</colgroup> 712<tbody><tr> 713<td><p><span class="term"><code class="computeroutput">symbol_name</code></span></p></td> 714<td><p>Null-terminated symbol name. Can handle std::string, char*, const char*. </p></td> 715</tr></tbody> 716</table></div></td> 717</tr> 718<tr> 719<td><p><span class="term">Returns:</span></p></td> 720<td><p><code class="computeroutput">true</code> if the loaded library contains a symbol with a given name. </p></td> 721</tr> 722<tr> 723<td><p><span class="term">Throws:</span></p></td> 724<td>Nothing. </td> 725</tr> 726</tbody> 727</table></div> 728</li> 729<li class="listitem"> 730<pre class="literallayout"><span class="keyword">bool</span> <a name="idm45168072606144-bb"></a><span class="identifier">has</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="special">&</span> symbol_name<span class="special">)</span> <span class="keyword">const</span> <span class="keyword">noexcept</span><span class="special">;</span></pre> 731<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p> 732</li> 733<li class="listitem"> 734<pre class="literallayout"><span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T<span class="special">></span> 735 <span class="identifier">boost</span><span class="special">::</span><span class="identifier">enable_if_c</span><span class="special"><</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_member_pointer</span><span class="special"><</span> <span class="identifier">T</span> <span class="special">></span><span class="special">::</span><span class="identifier">value</span><span class="special">||</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_reference</span><span class="special"><</span> <span class="identifier">T</span> <span class="special">></span><span class="special">::</span><span class="identifier">value</span><span class="special">,</span> <span class="identifier">T</span> <span class="special">></span><span class="special">::</span><span class="identifier">type</span> 736 <a name="idm45168072603792-bb"></a><span class="identifier">get</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="special">&</span> symbol_name<span class="special">)</span> <span class="keyword">const</span><span class="special">;</span></pre> 737<p>Returns reference to the symbol (function or variable) with the given name from the loaded library. This call will always succeed and throw nothing if call to <code class="computeroutput">has(const char* )</code> member function with the same symbol name returned <code class="computeroutput">true</code>.</p> 738<p><span class="bold"><strong>Example:</strong></span> </p> 739<pre class="programlisting"><span class="keyword">int</span><span class="special">&</span> <span class="identifier">i0</span> <span class="special">=</span> <span class="identifier">lib</span><span class="special">.</span><span class="identifier">get</span><span class="special"><</span><span class="keyword">int</span><span class="special">></span><span class="special">(</span><span class="string">"integer_name"</span><span class="special">)</span><span class="special">;</span> 740<span class="keyword">int</span><span class="special">&</span> <span class="identifier">i1</span> <span class="special">=</span> <span class="special">*</span><span class="identifier">lib</span><span class="special">.</span><span class="identifier">get</span><span class="special"><</span><span class="keyword">int</span><span class="special">*</span><span class="special">></span><span class="special">(</span><span class="string">"integer_alias_name"</span><span class="special">)</span><span class="special">;</span> 741</pre> 742<p> 743 744 745 746</p> 747<div class="variablelist"><table border="0" class="variablelist compact"> 748<colgroup> 749<col align="left" valign="top"> 750<col> 751</colgroup> 752<tbody> 753<tr> 754<td><p><span class="term">Parameters:</span></p></td> 755<td><div class="variablelist"><table border="0" class="variablelist compact"> 756<colgroup> 757<col align="left" valign="top"> 758<col> 759</colgroup> 760<tbody><tr> 761<td><p><span class="term"><code class="computeroutput">symbol_name</code></span></p></td> 762<td><p>Null-terminated symbol name. Can handle std::string, char*, const char*. </p></td> 763</tr></tbody> 764</table></div></td> 765</tr> 766<tr> 767<td><p><span class="term">Template Parameters:</span></p></td> 768<td><div class="variablelist"><table border="0" class="variablelist compact"> 769<colgroup> 770<col align="left" valign="top"> 771<col> 772</colgroup> 773<tbody><tr> 774<td><p><span class="term"><code class="computeroutput">T</code></span></p></td> 775<td><p>Type of the symbol that we are going to import. Must be explicitly specified. </p></td> 776</tr></tbody> 777</table></div></td> 778</tr> 779<tr> 780<td><p><span class="term">Returns:</span></p></td> 781<td><p>Reference to the symbol. </p></td> 782</tr> 783<tr> 784<td><p><span class="term">Throws:</span></p></td> 785<td> </td> 786</tr> 787</tbody> 788</table></div> 789</li> 790<li class="listitem"> 791<pre class="literallayout"><span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T<span class="special">></span> 792 <span class="identifier">boost</span><span class="special">::</span><span class="identifier">disable_if_c</span><span class="special"><</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_member_pointer</span><span class="special"><</span> <span class="identifier">T</span> <span class="special">></span><span class="special">::</span><span class="identifier">value</span><span class="special">||</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_reference</span><span class="special"><</span> <span class="identifier">T</span> <span class="special">></span><span class="special">::</span><span class="identifier">value</span><span class="special">,</span> <span class="identifier">T</span> <span class="special">&</span> <span class="special">></span><span class="special">::</span><span class="identifier">type</span> 793 <a name="idm45168072595696-bb"></a><span class="identifier">get</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="special">&</span> symbol_name<span class="special">)</span> <span class="keyword">const</span><span class="special">;</span></pre> 794<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p> 795</li> 796<li class="listitem"> 797<pre class="literallayout"><span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T<span class="special">></span> 798 <span class="identifier">boost</span><span class="special">::</span><span class="identifier">enable_if_c</span><span class="special"><</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_member_pointer</span><span class="special"><</span> <span class="identifier">T</span> <span class="special">></span><span class="special">::</span><span class="identifier">value</span><span class="special">||</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_reference</span><span class="special"><</span> <span class="identifier">T</span> <span class="special">></span><span class="special">::</span><span class="identifier">value</span><span class="special">,</span> <span class="identifier">T</span> <span class="special">></span><span class="special">::</span><span class="identifier">type</span> 799 <a name="idm45168072592416-bb"></a><span class="identifier">get</span><span class="special">(</span><span class="keyword">const</span> <span class="keyword">char</span> <span class="special">*</span> symbol_name<span class="special">)</span> <span class="keyword">const</span><span class="special">;</span></pre> 800<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p> 801</li> 802<li class="listitem"> 803<pre class="literallayout"><span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T<span class="special">></span> 804 <span class="identifier">boost</span><span class="special">::</span><span class="identifier">disable_if_c</span><span class="special"><</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_member_pointer</span><span class="special"><</span> <span class="identifier">T</span> <span class="special">></span><span class="special">::</span><span class="identifier">value</span><span class="special">||</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_reference</span><span class="special"><</span> <span class="identifier">T</span> <span class="special">></span><span class="special">::</span><span class="identifier">value</span><span class="special">,</span> <span class="identifier">T</span> <span class="special">&</span> <span class="special">></span><span class="special">::</span><span class="identifier">type</span> 805 <a name="idm45168072589136-bb"></a><span class="identifier">get</span><span class="special">(</span><span class="keyword">const</span> <span class="keyword">char</span> <span class="special">*</span> symbol_name<span class="special">)</span> <span class="keyword">const</span><span class="special">;</span></pre> 806<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p> 807</li> 808<li class="listitem"> 809<pre class="literallayout"><span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T<span class="special">></span> <span class="identifier">T</span> <span class="special">&</span> <a name="idm45168072585856-bb"></a><span class="identifier">get_alias</span><span class="special">(</span><span class="keyword">const</span> <span class="keyword">char</span> <span class="special">*</span> alias_name<span class="special">)</span> <span class="keyword">const</span><span class="special">;</span></pre> 810<p>Returns a symbol (function or variable) from a shared library by alias name of the symbol.</p> 811<p><span class="bold"><strong>Example:</strong></span> </p> 812<pre class="programlisting"><span class="keyword">int</span><span class="special">&</span> <span class="identifier">i</span> <span class="special">=</span> <span class="identifier">lib</span><span class="special">.</span><span class="identifier">get_alias</span><span class="special"><</span><span class="keyword">int</span><span class="special">></span><span class="special">(</span><span class="string">"integer_alias_name"</span><span class="special">)</span><span class="special">;</span> 813</pre> 814<p> 815 816 817</p> 818<div class="variablelist"><table border="0" class="variablelist compact"> 819<colgroup> 820<col align="left" valign="top"> 821<col> 822</colgroup> 823<tbody> 824<tr> 825<td><p><span class="term">Parameters:</span></p></td> 826<td><div class="variablelist"><table border="0" class="variablelist compact"> 827<colgroup> 828<col align="left" valign="top"> 829<col> 830</colgroup> 831<tbody><tr> 832<td><p><span class="term"><code class="computeroutput">alias_name</code></span></p></td> 833<td><p>Null-terminated alias symbol name. Can handle std::string, char*, const char*. </p></td> 834</tr></tbody> 835</table></div></td> 836</tr> 837<tr> 838<td><p><span class="term">Template Parameters:</span></p></td> 839<td><div class="variablelist"><table border="0" class="variablelist compact"> 840<colgroup> 841<col align="left" valign="top"> 842<col> 843</colgroup> 844<tbody><tr> 845<td><p><span class="term"><code class="computeroutput">T</code></span></p></td> 846<td><p>Type of the symbol that we are going to import. Must be explicitly specified.. </p></td> 847</tr></tbody> 848</table></div></td> 849</tr> 850<tr> 851<td><p><span class="term">Throws:</span></p></td> 852<td> </td> 853</tr> 854</tbody> 855</table></div> 856</li> 857<li class="listitem"> 858<pre class="literallayout"><span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> T<span class="special">></span> <span class="identifier">T</span> <span class="special">&</span> <a name="idm45168072579472-bb"></a><span class="identifier">get_alias</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="special">&</span> alias_name<span class="special">)</span> <span class="keyword">const</span><span class="special">;</span></pre> 859<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p> 860</li> 861<li class="listitem"> 862<pre class="literallayout"><span class="identifier">native_handle_t</span> <a name="idm45168072576272-bb"></a><span class="identifier">native</span><span class="special">(</span><span class="special">)</span> <span class="keyword">const</span> <span class="keyword">noexcept</span><span class="special">;</span></pre> 863<p>Returns the native handler of the loaded library.</p> 864<p> 865</p> 866<div class="variablelist"><table border="0" class="variablelist compact"> 867<colgroup> 868<col align="left" valign="top"> 869<col> 870</colgroup> 871<tbody><tr> 872<td><p><span class="term">Returns:</span></p></td> 873<td><p>Platform-specific handle. </p></td> 874</tr></tbody> 875</table></div> 876</li> 877<li class="listitem"> 878<pre class="literallayout"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">dll</span><span class="special">::</span><span class="identifier">fs</span><span class="special">::</span><span class="identifier">path</span> <a name="idm45168072573824-bb"></a><span class="identifier">location</span><span class="special">(</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span></pre> 879<p>Returns full path and name of this shared object.</p> 880<p><span class="bold"><strong>Example:</strong></span> </p> 881<pre class="programlisting"><span class="identifier">shared_library</span> <span class="identifier">lib</span><span class="special">(</span><span class="string">"test_lib.dll"</span><span class="special">)</span><span class="special">;</span> 882<span class="identifier">filesystem</span><span class="special">::</span><span class="identifier">path</span> <span class="identifier">full_path</span> <span class="special">=</span> <span class="identifier">lib</span><span class="special">.</span><span class="identifier">location</span><span class="special">(</span><span class="special">)</span><span class="special">;</span> <span class="comment">// C:\Windows\System32\test_lib.dll</span> 883</pre> 884<p> 885 886</p> 887<div class="variablelist"><table border="0" class="variablelist compact"> 888<colgroup> 889<col align="left" valign="top"> 890<col> 891</colgroup> 892<tbody> 893<tr> 894<td><p><span class="term">Returns:</span></p></td> 895<td><p>Full path to the shared library. </p></td> 896</tr> 897<tr> 898<td><p><span class="term">Throws:</span></p></td> 899<td> </td> 900</tr> 901</tbody> 902</table></div> 903</li> 904<li class="listitem"> 905<pre class="literallayout"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">dll</span><span class="special">::</span><span class="identifier">fs</span><span class="special">::</span><span class="identifier">path</span> <a name="idm45168072569328-bb"></a><span class="identifier">location</span><span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">dll</span><span class="special">::</span><span class="identifier">fs</span><span class="special">::</span><span class="identifier">error_code</span> <span class="special">&</span> ec<span class="special">)</span> <span class="keyword">const</span><span class="special">;</span></pre> 906<p>Returns full path and name of shared module.</p> 907<p><span class="bold"><strong>Example:</strong></span> </p> 908<pre class="programlisting"><span class="identifier">shared_library</span> <span class="identifier">lib</span><span class="special">(</span><span class="string">"test_lib.dll"</span><span class="special">)</span><span class="special">;</span> 909<span class="identifier">filesystem</span><span class="special">::</span><span class="identifier">path</span> <span class="identifier">full_path</span> <span class="special">=</span> <span class="identifier">lib</span><span class="special">.</span><span class="identifier">location</span><span class="special">(</span><span class="special">)</span><span class="special">;</span> <span class="comment">// C:\Windows\System32\test_lib.dll</span> 910</pre> 911<p> 912 913 914</p> 915<div class="variablelist"><table border="0" class="variablelist compact"> 916<colgroup> 917<col align="left" valign="top"> 918<col> 919</colgroup> 920<tbody> 921<tr> 922<td><p><span class="term">Parameters:</span></p></td> 923<td><div class="variablelist"><table border="0" class="variablelist compact"> 924<colgroup> 925<col align="left" valign="top"> 926<col> 927</colgroup> 928<tbody><tr> 929<td><p><span class="term"><code class="computeroutput">ec</code></span></p></td> 930<td><p>Variable that will be set to the result of the operation. </p></td> 931</tr></tbody> 932</table></div></td> 933</tr> 934<tr> 935<td><p><span class="term">Returns:</span></p></td> 936<td><p>Full path to the shared library. </p></td> 937</tr> 938<tr> 939<td><p><span class="term">Throws:</span></p></td> 940<td>std::bad_alloc. </td> 941</tr> 942</tbody> 943</table></div> 944</li> 945<li class="listitem"> 946<pre class="literallayout"><span class="keyword">void</span> <a name="idm45168072563504-bb"></a><span class="identifier">swap</span><span class="special">(</span><a class="link" href="shared_library.html" title="Class shared_library">shared_library</a> <span class="special">&</span> rhs<span class="special">)</span> <span class="keyword">noexcept</span><span class="special">;</span></pre> 947<p>Swaps two libraries. Does not invalidate existing symbols and functions loaded from libraries.</p> 948<p> 949 950</p> 951<div class="variablelist"><table border="0" class="variablelist compact"> 952<colgroup> 953<col align="left" valign="top"> 954<col> 955</colgroup> 956<tbody> 957<tr> 958<td><p><span class="term">Parameters:</span></p></td> 959<td><div class="variablelist"><table border="0" class="variablelist compact"> 960<colgroup> 961<col align="left" valign="top"> 962<col> 963</colgroup> 964<tbody><tr> 965<td><p><span class="term"><code class="computeroutput">rhs</code></span></p></td> 966<td><p>Library to swap with. </p></td> 967</tr></tbody> 968</table></div></td> 969</tr> 970<tr> 971<td><p><span class="term">Throws:</span></p></td> 972<td>Nothing. </td> 973</tr> 974</tbody> 975</table></div> 976</li> 977</ol></div> 978</div> 979<div class="refsect2"> 980<a name="id-1.3.15.8.2.6.4.4.6"></a><h3> 981<a name="idm45168072517136-bb"></a><code class="computeroutput">shared_library</code> public static functions</h3> 982<div class="orderedlist"><ol class="orderedlist" type="1"> 983<li class="listitem"> 984<pre class="literallayout"><span class="keyword">static</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">dll</span><span class="special">::</span><span class="identifier">fs</span><span class="special">::</span><span class="identifier">path</span> <a name="idm45168072516576-bb"></a><span class="identifier">suffix</span><span class="special">(</span><span class="special">)</span><span class="special">;</span></pre> 985<p>Returns suffix of shared module: in a call to load() or the constructor/load.</p> 986<p> 987</p> 988<div class="variablelist"><table border="0" class="variablelist compact"> 989<colgroup> 990<col align="left" valign="top"> 991<col> 992</colgroup> 993<tbody><tr> 994<td><p><span class="term">Returns:</span></p></td> 995<td><p>The suffix od shared module: ".dll" (Windows), ".so" (Unix/Linux/BSD), ".dylib" (MacOS/IOS) </p></td> 996</tr></tbody> 997</table></div> 998</li> 999<li class="listitem"> 1000<pre class="literallayout"><span class="keyword">static</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">dll</span><span class="special">::</span><span class="identifier">fs</span><span class="special">::</span><span class="identifier">path</span> <a name="idm45168072514032-bb"></a><span class="identifier">decorate</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">dll</span><span class="special">::</span><span class="identifier">fs</span><span class="special">::</span><span class="identifier">path</span> <span class="special">&</span> sl<span class="special">)</span><span class="special">;</span></pre> 1001<p>Returns the decorated path to a shared module name, i.e. with needed prefix/suffix added.</p> 1002<p><span class="bold"><strong>Recommendations:</strong></span> Use <code class="computeroutput">load</code> with <code class="computeroutput">load_mode::append_decorations</code> instead of constructing the decorated path via <code class="computeroutput">decorate()</code> and loading by it.</p> 1003<p>For instance, for a path like "path/to/boost" it returns :</p> 1004<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> 1005<li class="listitem"><p>path/to/libboost.so on posix platforms</p></li> 1006<li class="listitem"><p>path/to/libboost.dylib on OSX</p></li> 1007<li class="listitem"><p>path/to/boost.dll on Windows</p></li> 1008</ul></div> 1009<p> 1010</p> 1011<p>Method handles both relative and absolute paths.</p> 1012<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> 1013<li class="listitem"><p>Windows note: <code class="computeroutput">decorate()</code> does not prepend "lib" to the decorated path. Use <code class="computeroutput">load</code> with <code class="computeroutput">load_mode::append_decorations</code> for MinGW compatibility purpose.</p></li> 1014<li class="listitem"><p>Posix note: if the initial module name is already prepended with lib, only the suffix() is appended to the path</p></li> 1015</ul></div> 1016<p> 1017</p> 1018<p> 1019 1020</p> 1021<div class="variablelist"><table border="0" class="variablelist compact"> 1022<colgroup> 1023<col align="left" valign="top"> 1024<col> 1025</colgroup> 1026<tbody> 1027<tr> 1028<td><p><span class="term">Parameters:</span></p></td> 1029<td><div class="variablelist"><table border="0" class="variablelist compact"> 1030<colgroup> 1031<col align="left" valign="top"> 1032<col> 1033</colgroup> 1034<tbody><tr> 1035<td><p><span class="term"><code class="computeroutput">sl</code></span></p></td> 1036<td><p>the module name and path to decorate - for instance : /usr/lib/boost</p></td> 1037</tr></tbody> 1038</table></div></td> 1039</tr> 1040<tr> 1041<td><p><span class="term">Returns:</span></p></td> 1042<td><p>The decorated unportable path that may not exists in the filesystem or could be wrong due to platform specifics. </p></td> 1043</tr> 1044</tbody> 1045</table></div> 1046</li> 1047</ol></div> 1048</div> 1049</div> 1050</div> 1051<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr> 1052<td align="left"></td> 1053<td align="right"><div class="copyright-footer">Copyright © 2014 Renato Tegon Forti, Antony Polukhin<br>Copyright © 2015 Antony Polukhin<br>Copyright © 2016 Antony Polukhin, Klemens Morgenstern<br>Copyright © 2017-2019 Antony Polukhin<p> 1054 Distributed under the Boost Software License, Version 1.0. (See accompanying 1055 file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 1056 </p> 1057</div></td> 1058</tr></table> 1059<hr> 1060<div class="spirit-nav"> 1061<a accesskey="p" href="program_location.html"><img src="../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../../boost_dll/reference.html#header.boost.dll.shared_library_hpp"><img src="../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="load_mode/type.html"><img src="../../../../doc/src/images/next.png" alt="Next"></a> 1062</div> 1063</body> 1064</html> 1065