From dc2493e7525bb7633f697ef10f72b72b46222249 Mon Sep 17 00:00:00 2001 From: Andy Belle-Isle <drumsetmonkey@gmail.com> Date: Fri, 30 Aug 2019 00:45:36 -0400 Subject: Forget what I said, I just need to change git attributes to mark for vendor --- .../include/my_object/my_object.hpp | 28 ++++++++++++++++++++++ .../include/my_object/my_object_api.hpp | 27 +++++++++++++++++++++ 2 files changed, 55 insertions(+) create mode 100644 lib/sol2/examples/require_dll_example/include/my_object/my_object.hpp create mode 100644 lib/sol2/examples/require_dll_example/include/my_object/my_object_api.hpp (limited to 'lib/sol2/examples/require_dll_example/include') diff --git a/lib/sol2/examples/require_dll_example/include/my_object/my_object.hpp b/lib/sol2/examples/require_dll_example/include/my_object/my_object.hpp new file mode 100644 index 0000000..f8ec5e5 --- /dev/null +++ b/lib/sol2/examples/require_dll_example/include/my_object/my_object.hpp @@ -0,0 +1,28 @@ +#pragma once + +#include <my_object/my_object_api.hpp> + +// forward declare as a C struct +// so a pointer to lua_State can be part of a signature +extern "C" { + struct lua_State; +} +// you can replace the above if you're fine with including +// <sol.hpp> earlier than absolutely necessary + +namespace my_object { + + struct test { + int value; + + test() = default; + test(int val) : value(val) {} + }; + +} // namespace my_object + +// this function needs to be exported from your +// dll. "extern 'C'" should do the trick, but +// we're including platform-specific stuff here to help +// see my_object_api.hpp for details +extern "C" MY_OBJECT_API int luaopen_my_object(lua_State* L); diff --git a/lib/sol2/examples/require_dll_example/include/my_object/my_object_api.hpp b/lib/sol2/examples/require_dll_example/include/my_object/my_object_api.hpp new file mode 100644 index 0000000..6af5f42 --- /dev/null +++ b/lib/sol2/examples/require_dll_example/include/my_object/my_object_api.hpp @@ -0,0 +1,27 @@ +#pragma once + +namespace my_object { + +#if defined _MSC_VER + #define MY_OBJECT_VC +#elif defined __GNUC__ + #define MY_OBJECT_GCC +#elif defined __clang__ + #define MY_OBJECT_CLANG +#endif + +#if defined MY_OBJECT_VC + #if defined MY_OBJECT_DLL + #if defined MY_OBJECT_BUILD + #define MY_OBJECT_API __declspec(dllexport) + #else + #define MY_OBJECT_API __declspec(dllexport) + #endif // MY_OBJECT_BUILD - Building the Library vs. Using the Library + #else + #define MY_OBJECT_API + #endif // Building a DLL vs. Static Library +#else // g++ / clang++ + #define MY_OBJECT_API __attribute__ ((visibility ("default"))) +#endif // MY_OBJECT_BUILD + +} // namespace my_object -- cgit v1.2.3