Improve dll export/import definition #181
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Follow-up to #178
Update API naming for clarity and consistency by renaming
UNSHIELD_DLLEXPORT
toUNSHIELD_API
. This change enhances naming clarity, making the purpose of the macro more intuitive and aligned with common naming conventions in cross- platform libraries.Optimize performance with export/import directives. By differentiating between
__declspec(dllexport)
and__declspec(dllimport)
in Windows builds, this adjustment improves the performance of dynamic linking, ensuring efficient symbol resolution and potentially reducing binary size.Enhance flexibility in CMake configuration. Applying
PRIVATE
andPUBLIC
specifiers intarget_compile_definitions
ensures thatUNSHIELD_EXPORT
is used internally within the library, whileUNSHIELD_DYNAMIC_LIBRARY
is propagated to clients of the library. This distinction prevents macro leaks and provides users with the appropriate definitions based on their linking method, offering greater flexibility and ease of integration in diverse build configurations.Substitute
_MSC_VER
with_WIN32
to broaden compatibility, ensuring that the library correctly handles DLL exports and imports across various Windows compilers, not just MSVC, thereby facilitating cross-platform builds. Indeed,__declspec(dllexport)
and__declspec(dllimport)
is a Windows convention instead of a Visual Studio one.