Make sure KIFACE_GETTER linkage is consistent

This makes sure that the declaration is always the same within a single
module, so all users have the same idea of whether the symbol is imported.

In all dynamically linked objects, all users should be aware that the
symbol is imported, while in the statically linked bitmap2component
program, no import/export decorations should be used.
This commit is contained in:
Simon Richter 2016-05-28 13:10:06 -04:00 committed by Chris Pavlina
parent b9a6c4988f
commit dca358076e
2 changed files with 10 additions and 2 deletions

View File

@ -719,7 +719,7 @@ KIFACE_I& Kiface()
// KIFACE_GETTER's actual spelling is a substitution macro found in kiway.h.
// KIFACE_GETTER will not have name mangling due to declaration in kiway.h.
MY_API( KIFACE* ) KIFACE_GETTER( int* aKIFACEversion, int aKIWAYversion, PGM_BASE* aProgram )
KIFACE* KIFACE_GETTER( int* aKIFACEversion, int aKIWAYversion, PGM_BASE* aProgram )
{
process = (PGM_BASE*) aProgram;
return &kiface;

View File

@ -445,7 +445,15 @@ extern KIWAY Kiway; // provided by single_top.cpp and kicad.cpp
typedef KIFACE* KIFACE_GETTER_FUNC( int* aKIFACEversion, int aKIWAYversion, PGM_BASE* aProgram );
/// No name mangling. Each KIFACE (DSO/DLL) will implement this once.
extern "C" KIFACE* KIFACE_GETTER( int* aKIFACEversion, int aKIWAYversion, PGM_BASE* aProgram );
extern "C" {
#if defined(BUILD_KIWAY_DLL)
MY_API( KIFACE* ) KIFACE_GETTER( int* aKIFACEversion, int aKIWAYversion, PGM_BASE* aProgram );
#else
KIFACE* KIFACE_GETTER( int* aKIFACEversion, int aKIWAYversion, PGM_BASE* aProgram );
#endif
}
#endif // KIWAY_H_