Here's a tricky question: we want to allow users to write extensions to the functionality of our program, but we do not want to give them the source codes. In other words we'd like to say, "Write a function X and pack it into a shared library. We may use your function along with functions of some other users!"
Note
You meet this technique in everyday life: your browser uses it to allow third-party plugins, your text editor may use it for syntax highlighting, games use dynamic library loading for downloadable content (DLCs) and for adding gamer's content, web pages are returned by servers that use modules/plugins for encryption/authentication and so forth.
What are the requirements for a user's function and how can we use that function at some point without linking it to the shared library?
Basic knowledge of C++ is required for this recipe. Reading the The portable way to export and import functions and classes from Chapter 10 is a requirement.