diff options
author | Andy Belle-Isle <drumsetmonkey@gmail.com> | 2019-08-30 00:45:36 -0400 |
---|---|---|
committer | Andy Belle-Isle <drumsetmonkey@gmail.com> | 2019-08-30 00:45:36 -0400 |
commit | dc2493e7525bb7633f697ef10f72b72b46222249 (patch) | |
tree | 9816755219e65d3f47fdce81c78f3736a7ddb8ab /lib/sol2/examples/require_dll_example/include | |
parent | 9d2b31797d0cfd130802b69261df2cd402e39b49 (diff) |
Forget what I said, I just need to change git attributes to mark for vendor
Diffstat (limited to 'lib/sol2/examples/require_dll_example/include')
-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 |