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>Chapter 14. Boost.DLL</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="libraries.html" title="Part I. The Boost C++ Libraries (BoostBook Subset)"> 10<link rel="prev" href="boost/local_time/tz_database.html" title="Type definition tz_database"> 11<link rel="next" href="boost_dll/getting_started.html" title="Getting started"> 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="boost/local_time/tz_database.html"><img src="../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="libraries.html"><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="boost_dll/getting_started.html"><img src="../../doc/src/images/next.png" alt="Next"></a> 25</div> 26<div class="chapter"> 27<div class="titlepage"><div> 28<div><h2 class="title"> 29<a name="boost_dll"></a>Chapter 14. Boost.DLL</h2></div> 30<div><div class="author"><h3 class="author"> 31<span class="firstname">Renato</span> <span class="surname">Forti</span> 32</h3></div></div> 33<div><div class="author"><h3 class="author"> 34<span class="firstname">Antony</span> <span class="surname">Polukhin</span> 35</h3></div></div> 36<div><p class="copyright">Copyright © 2014 Renato Tegon Forti, Antony Polukhin</p></div> 37<div><p class="copyright">Copyright © 2015 Antony Polukhin</p></div> 38<div><p class="copyright">Copyright © 2016 Antony Polukhin, Klemens Morgenstern</p></div> 39<div><p class="copyright">Copyright © 2017-2019 Antony Polukhin</p></div> 40<div><div class="legalnotice"> 41<a name="boost_dll.legal"></a><p> 42 Distributed under the Boost Software License, Version 1.0. (See accompanying 43 file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 44 </p> 45</div></div> 46</div></div> 47<div class="toc"> 48<p><b>Table of Contents</b></p> 49<dl class="toc"> 50<dt><span class="section"><a href="boost_dll.html#boost_dll.introduction">Motivation</a></span></dt> 51<dt><span class="section"><a href="boost_dll/getting_started.html">Getting started</a></span></dt> 52<dt><span class="section"><a href="boost_dll/tutorial.html">Tutorial</a></span></dt> 53<dd><dl> 54<dt><span class="section"><a href="boost_dll/tutorial.html#boost_dll.tutorial.plugin_basics">Plugin basics</a></span></dt> 55<dt><span class="section"><a href="boost_dll/tutorial.html#boost_dll.tutorial.factory_method_in_plugin">Factory 56 method in plugin</a></span></dt> 57<dt><span class="section"><a href="boost_dll/tutorial.html#boost_dll.tutorial.searching_for_a_symbol_in_multiple_plugins">Searching 58 for a symbol in multiple plugins</a></span></dt> 59<dt><span class="section"><a href="boost_dll/tutorial.html#boost_dll.tutorial.linking_plugin_into_the_executable">Linking 60 plugin into the executable</a></span></dt> 61<dt><span class="section"><a href="boost_dll/tutorial.html#boost_dll.tutorial.symbol_shadowing_problem__linux_">Symbol 62 shadowing problem (Linux)</a></span></dt> 63<dt><span class="section"><a href="boost_dll/tutorial.html#boost_dll.tutorial.executing_callbacks_on_library_unload">Executing 64 callbacks on library unload</a></span></dt> 65<dt><span class="section"><a href="boost_dll/tutorial.html#boost_dll.tutorial.querying_libraries_for_symbols">Querying 66 libraries for symbols</a></span></dt> 67<dt><span class="section"><a href="boost_dll/tutorial.html#boost_dll.tutorial.advanced_library_reference_counting">Advanced 68 library reference counting</a></span></dt> 69<dt><span class="section"><a href="boost_dll/tutorial.html#boost_dll.tutorial.importing_a_c_function_from_windows_dll">Importing 70 a C function from Windows dll</a></span></dt> 71</dl></dd> 72<dt><span class="section"><a href="boost_dll/mangled_import.html">Mangled Import</a></span></dt> 73<dd><dl> 74<dt><span class="section"><a href="boost_dll/mangled_import.html#boost_dll.mangled_import.support___requirements">Support 75 & Requirements</a></span></dt> 76<dt><span class="section"><a href="boost_dll/mangled_import.html#boost_dll.mangled_import.mangled_import_example">Mangled 77 Import Example</a></span></dt> 78<dt><span class="section"><a href="boost_dll/mangled_import.html#boost_dll.mangled_import.class_import">Class Import</a></span></dt> 79<dt><span class="section"><a href="boost_dll/mangled_import.html#boost_dll.mangled_import.overloading_qualifiers">Overloading 80 qualifiers</a></span></dt> 81</dl></dd> 82<dt><span class="section"><a href="boost_dll/missuses.html">Missuses</a></span></dt> 83<dt><span class="section"><a href="boost_dll/reference.html">Reference</a></span></dt> 84<dd><dl> 85<dt><span class="section"><a href="boost_dll/reference.html#shared_library_reference">Shared Library Reference</a></span></dt> 86<dt><span class="section"><a href="boost_dll/reference.html#shared_library_refcountable_reference">Shared Library Refcountable Reference</a></span></dt> 87</dl></dd> 88<dt><span class="section"><a href="boost_dll/limitations.html">Limitations</a></span></dt> 89<dd><dl> 90<dt><span class="section"><a href="boost_dll/limitations.html#boost_dll.limitations.exporting_weak_symbols__fails_on_mingw__android_">Exporting 91 weak symbols (Fails on MinGW, Android)</a></span></dt> 92<dt><span class="section"><a href="boost_dll/limitations.html#boost_dll.limitations.user_defined_section_names__fails_on_sunos___oracle_solaris_studio_compilers_">User 93 defined section names (Fails on SunOS + Oracle Solaris Studio Compilers)</a></span></dt> 94<dt><span class="section"><a href="boost_dll/limitations.html#boost_dll.limitations.multithread">Thread safe library 95 loading (Fails on FreeBSD, MacOS, iOS and some other)</a></span></dt> 96<dt><span class="section"><a href="boost_dll/limitations.html#boost_dll.limitations.nested">Nested Function Definitions</a></span></dt> 97</dl></dd> 98<dt><span class="section"><a href="boost_dll/f_a_q_.html">F.A.Q.</a></span></dt> 99<dt><span class="section"><a href="boost_dll/design_rationale.html">Design Rationale</a></span></dt> 100<dd><dl> 101<dt><span class="section"><a href="boost_dll/design_rationale.html#boost_dll.design_rationale.abi_portability_across_compilers">ABI 102 portability across compilers</a></span></dt> 103<dt><span class="section"><a href="boost_dll/design_rationale.html#boost_dll.design_rationale.user_s_plugin_api">User's 104 plugin API</a></span></dt> 105<dt><span class="section"><a href="boost_dll/design_rationale.html#boost_dll.design_rationale.performance_and_memory_allocations">Performance 106 and memory allocations</a></span></dt> 107<dt><span class="section"><a href="boost_dll/design_rationale.html#boost_dll.design_rationale.self_loading">Self loading</a></span></dt> 108<dt><span class="section"><a href="boost_dll/design_rationale.html#boost_dll.design_rationale.aliases_vs_mangling">Aliases 109 vs Mangling</a></span></dt> 110</dl></dd> 111<dt><span class="section"><a href="boost_dll/dependencies.html">Dependencies</a></span></dt> 112<dt><span class="section"><a href="boost_dll/revision_history.html">Revision History</a></span></dt> 113<dt><span class="section"><a href="boost_dll/acknowledgements.html">Acknowledgements</a></span></dt> 114</dl> 115</div> 116<div class="section"> 117<div class="titlepage"><div><div><h2 class="title" style="clear: both"> 118<a name="boost_dll.introduction"></a><a class="link" href="boost_dll.html#boost_dll.introduction" title="Motivation">Motivation</a> 119</h2></div></div></div> 120<p> 121 Adding a specific features to an existing software applications at runtime 122 could be useful in many cases. Such extensions, or plugins, are usually implemented 123 using Dynamic Library Modules (DLL,SO/DSO) loaded at runtime. 124 </p> 125<p> 126 This library was designed to simplify plugin development using C++ in a portable 127 cross-platform manner. 128 </p> 129<p> 130 Library provides a portable across platforms way to: 131 </p> 132<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> 133<li class="listitem"> 134 load libraries 135 </li> 136<li class="listitem"> 137 import any native functions and variables 138 </li> 139<li class="listitem"> 140 make alias names for C++ mangled functions and symbols 141 </li> 142<li class="listitem"> 143 query libraries for sections and exported symbols 144 </li> 145<li class="listitem"> 146 self loading and self querying 147 </li> 148<li class="listitem"> 149 getting program and module location by exported symbol 150 </li> 151</ul></div> 152</div> 153</div> 154<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr> 155<td align="left"><p><small>Last revised: August 11, 2020 at 15:03:46 GMT</small></p></td> 156<td align="right"><div class="copyright-footer"></div></td> 157</tr></table> 158<hr> 159<div class="spirit-nav"> 160<a accesskey="p" href="boost/local_time/tz_database.html"><img src="../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="libraries.html"><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="boost_dll/getting_started.html"><img src="../../doc/src/images/next.png" alt="Next"></a> 161</div> 162</body> 163</html> 164