--- fftw/api/fftw3.h +++ fftw/api/fftw3.h @@ -83,7 +83,7 @@ extern "C" # define FFTW_EXTERN extern __declspec(dllimport) # endif #else -# define FFTW_EXTERN extern +# define FFTW_EXTERN extern __attribute__ ((visibility("default"))) #endif /* specify calling convention (Windows only) */ --- fftw/api/x77.h +++ fftw/api/x77.h @@ -65,5 +65,5 @@ #if defined(FFTW_DLL) && (defined(_WIN32) || defined(__WIN32__)) # define FFTW_VOIDFUNC __declspec(dllexport) void #else -# define FFTW_VOIDFUNC void +# define FFTW_VOIDFUNC void __attribute__ ((visibility("default"))) #endif --- fftw/dft/dft.h +++ fftw/dft/dft.h @@ -54,7 +54,7 @@ typedef struct { dftapply apply; } plan_dft; -plan *X(mkplan_dft)(size_t size, const plan_adt *adt, dftapply apply); +IFFTW_EXTERN plan *X(mkplan_dft)(size_t size, const plan_adt *adt, dftapply apply); #define MKPLAN_DFT(type, adt, apply) \ (type *)X(mkplan_dft)(sizeof(type), adt, apply) --- fftw/kernel/ifftw.h +++ fftw/kernel/ifftw.h @@ -56,7 +56,7 @@ extern "C" && (defined(_WIN32) || defined(__WIN32__)) # define IFFTW_EXTERN extern __declspec(dllexport) #else -# define IFFTW_EXTERN extern +# define IFFTW_EXTERN extern __attribute__ ((visibility("default"))) #endif /* determine precision and name-mangling scheme */ @@ -581,10 +581,10 @@ struct solver_s { int refcnt; }; -solver *X(mksolver)(size_t size, const solver_adt *adt); +IFFTW_EXTERN solver *X(mksolver)(size_t size, const solver_adt *adt); void X(solver_use)(solver *ego); void X(solver_destroy)(solver *ego); -void X(solver_register)(planner *plnr, solver *s); +IFFTW_EXTERN void X(solver_register)(planner *plnr, solver *s); /* shorthand */ #define MKSOLVER(type, adt) (type *)X(mksolver)(sizeof(type), adt) --- fftw/rdft/rdft.h +++ fftw/rdft/rdft.h @@ -67,7 +67,7 @@ typedef struct { rdftapply apply; } plan_rdft; -plan *X(mkplan_rdft)(size_t size, const plan_adt *adt, rdftapply apply); +IFFTW_EXTERN plan *X(mkplan_rdft)(size_t size, const plan_adt *adt, rdftapply apply); #define MKPLAN_RDFT(type, adt, apply) \ (type *)X(mkplan_rdft)(sizeof(type), adt, apply) @@ -148,7 +148,7 @@ typedef struct { rdft2apply apply; } plan_rdft2; -plan *X(mkplan_rdft2)(size_t size, const plan_adt *adt, rdft2apply apply); +IFFTW_EXTERN plan *X(mkplan_rdft2)(size_t size, const plan_adt *adt, rdft2apply apply); #define MKPLAN_RDFT2(type, adt, apply) \ (type *)X(mkplan_rdft2)(sizeof(type), adt, apply)