Skip to content

Prefer GenerateExportHeader to EXPORT_ALL_SYMBOLS #49

Open
@mathstuf

Description

@mathstuf

In my experience, having finer control over exported symbols is much better than exporting all of them (either via the default behavior of GCC-and-friends or via WINDOWS_EXPORT_ALL_SYMBOLS). Among these benefits:

  • smaller binary size (internal template instantiation names can be hidden)
  • better inlining; if the compiler/LTO knows a symbol isn't exposed at all, it can be more aggressively inlined)
  • less chance of someone using a symbol you didn't intend to expose (more a problem in C than C++)

Instead, GenerateExportHeader should be used to generate a header with _EXPORT macros to decorate classes, functions, and variables as being available to other libraries.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions