Mercurial > code
diff C++/doc/Dynlib/Home.md @ 334:0b576ee64d45
* Create brand new hierarchy
* Rename DynLib to Dynlib
* Remove some warnings
author | David Demelier <markand@malikania.fr> |
---|---|
date | Sun, 08 Mar 2015 14:26:33 +0100 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/C++/doc/Dynlib/Home.md Sun Mar 08 14:26:33 2015 +0100 @@ -0,0 +1,69 @@ +# DynLib + +This class provides routines to load shared libraries in a portable manner. + +## Operating system support + +| System | Support | Remarks | +|---------|----------|-------------------------------------| +| Linux | Complete | Linker needs -ldl linker flags | +| FreeBSD | Complete | | +| Windows | Complete | Immediately policy is not available | + +## API Reference + +### Macros constants + +- [DYNLIB_EXPORT](macro/DYNLIB_EXPORT.md) + +### Classes + +- [DynLib](class/Dynlib.md) + +## Tutorial + +This is the library code to be compiled as a shared module. + +**Library.cpp** + +````cpp +#include <iostream> +#include <string> + +#include "DynLib.h" + +extern "C" { + +DYNLIB_EXPORT void a_sayHello(const std::string &name) +{ + std::cout << "Hello " << name << "!" << std::endl; +} + +} +```` + +And this is the code that load the shared module. + +**Main.cpp** + +````cpp +#include <iostream> + +#include "DynLib.h" + +using HelloFunc = void (*)(const std::string &); + +int main(void) +{ + try { + DynLib library("./liba.so"); + + HelloFunc hello = library.sym<HelloFunc>("a_sayHello"); + hello("Test"); + } catch (const std::exception &error) { + std::cerr << error.what() << std::endl; + } + + return 0; +} +````