-# define VLC_PUBLIC_API
-# define VLC_EXPORT( type, name, args ) struct _u_n_u_s_e_d_
-# define VLC_INTERNAL( type, name, args ) struct _u_n_u_s_e_d_
- extern module_symbols_t* p_symbols;
+# if HAVE_ATTRIBUTE_VISIBILITY
+# define VLC_PUBLIC_API extern __attribute__((visibility("default")))
+# define VLC_PRIVATE_API extern __attribute__((visibility("default")))
+# define VLC_EXPORT( type, name, args ) __attribute__((visibility("default"))) type name args
+# define VLC_INTERNAL( type, name, args ) __attribute__((visibility("hidden"))) type name args
+# else
+# define VLC_PUBLIC_API extern
+# define VLC_PRIVATE_API extern
+# define VLC_EXPORT( type, name, args ) type name args
+# define VLC_INTERNAL( type, name, args ) type name args
+# endif