Нет, __ declspec зависит от VC ++.
Одной из причин, по которой VC ++ необходим, является то, что по умолчанию библиотеки DLL не предоставляют символы вне библиотеки DLL, если это явно не требуется. В Posix общие объекты предоставляют все свои (не статичные) символы, если явно не указано, чтобы скрыть их.
Обновление
Исходя из вашего комментария, что вы хотите сделать ваш код переносимым, вы хотите использовать препроцессор и сделать что-то вроде этого:
#ifdef WIN32
#ifdef EXPORT_CLASS_FOO
#define CLASS_FOO __declspec(dllexport)
#else
#define CLASS_FOO __declspec(dllimport)
#endif
#else
#define CLASS_FOO
#endif
class CLASS_FOO foo
{ ... };
В проекте, реализующем класс, обязательно добавьте EXPORT_CLASS_FOO в качестве определения препроцессора (находится в Project | NAME Properties .. в C / C ++ | Preprocessor | Preprocess Definitions). Таким образом, вы будете экспортировать их при сборке DLL, импортировать их при использовании DLL и ничего не делать под Unix.