diff options
author | Andy <drumsetmonkey@gmail.com> | 2019-08-29 13:07:45 -0400 |
---|---|---|
committer | Andy <drumsetmonkey@gmail.com> | 2019-08-29 13:07:45 -0400 |
commit | 4ac4b280abf2ffa28caa5a532353115a3033444f (patch) | |
tree | 2a13d658bb454360b2faf401244bb0321d3460d4 /lib/sol2/examples/require_dll_example/include/my_object | |
parent | e9758416b18b27a65337c28d9641afc0ee89b34b (diff) | |
parent | 7a46fa2dd3dad3f038bf8e7339bc67abca428ae6 (diff) |
Started creating scripting library/namespace and added sol2 for interfacing
Diffstat (limited to 'lib/sol2/examples/require_dll_example/include/my_object')
-rw-r--r-- | lib/sol2/examples/require_dll_example/include/my_object/my_object.hpp | 28 | ||||
-rw-r--r-- | lib/sol2/examples/require_dll_example/include/my_object/my_object_api.hpp | 27 |
2 files changed, 55 insertions, 0 deletions
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 |