right, so William could declare only "setup" with __attribute__((visibility("default"))) and in your makefile:
ifeq ($(make-lib-executable),yes) ldflags := -fvisibility=hidden endif
Note that this doesn't work on Windows because MinGW ignores visibility attributes. But there's a solution:
On MinGW, GCC exports all non-static symbols unless at least one symbol is declared with __declspec(dllexport).
For Windows, simply declare the library's "setup" function with __declspec(dllexport). "make-lib-executable=yes" -> only the "setup" function is exported. "make-lib-executable=no" -> the file containing the "setup" function won't be compiled, so all other non-static symbols are exported (as usual).
Christof
Gesendet: Freitag, 02. August 2019 um 17:34 Uhr Von: "katja" katjavetter@gmail.com An: Pd-List pd-list@lists.iem.at Betreff: Re: [PD] [PD-announce] timbreID 0.8.1
On 8/2/19, Christof Ressi christof.ressi@gmx.at wrote:
ah, for this to work you'd have to make sure that "timbreID_setup" is not exported... pd-lib-builder exports all non-static functions by default...
... because gcc exports all non-static functions by default. No need to hack Makefile.pdlibbuilder, a library makefile can overrule the default with:
ldflags := -fvisibility=hidden
Pd-list@lists.iem.at mailing list UNSUBSCRIBE and account-management -> https://lists.puredata.info/listinfo/pd-list