1 // Copyright 2014 Renato Tegon Forti, Antony Polukhin.
2 // Copyright 2015-2016 Antony Polukhin.
4 // Distributed under the Boost Software License, Version 1.0.
5 // (See accompanying file LICENSE_1_0.txt
6 // or copy at http://www.boost.org/LICENSE_1_0.txt)
8 // MinGW related workaround
9 #define BOOST_DLL_FORCE_ALIAS_INSTANTIATION
11 #include <boost/dll.hpp>
14 #ifdef BOOST_NO_CXX11_NOEXCEPT
18 #define API extern "C" BOOST_SYMBOL_EXPORT
20 #ifndef BOOST_NO_CXX11_RVALUE_REFERENCES
21 //[getting_started_exports_cpp11_function
22 namespace some_namespace
{
23 API
int i_am_a_cpp11_function(std::string
&& param
) noexcept
;
24 // ^-------------------- function name to use in dll::import<>
30 //[getting_started_exports_cpp_variable
31 namespace your_project_namespace
{
32 API
std::string cpp_variable_name
;
38 //[getting_started_exports_alias
39 namespace some_namespace
{
40 std::string
i_am_function_with_ugly_name(const std::string
& param
) noexcept
;
43 // When you have no control over function sources or wish to specify another name.
44 BOOST_DLL_ALIAS(some_namespace::i_am_function_with_ugly_name
, pretty_name
)
47 //[getting_started_exports_c_function
48 API
int c_func_name(int);
51 //[getting_started_exports_c_variable
52 API
int c_variable_name
;
55 int c_func_name(int i
) { return ++i
; }
56 int c_variable_name
= 1;
57 std::string
your_project_namespace::cpp_variable_name
= "some value";
59 namespace some_namespace
{
60 std::string
i_am_function_with_ugly_name(const std::string
& param
) noexcept
{
61 return param
+ " Hello from lib!";
64 #ifndef BOOST_NO_CXX11_RVALUE_REFERENCES
65 int i_am_a_cpp11_function(std::string
&& param
) noexcept
{
66 return static_cast<int>(param
.size());