Update API naming for clarity and consistency by renaming UNSHIELD_DLLEXPORT to UNSHIELD_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 and PUBLIC specifiers in target_compile_definitions ensures that UNSHIELD_EXPORT is used internally within the library, while UNSHIELD_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.
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.