Я хотел бы знать, является ли экспорт класса (__ declspec (dllexport) в VC ++) своего рода стандартом (ANSI, ISO...)
Я хотел бы знать, есть ли у кого-то уже попытка сделать то же с компилятором C++ Intel и gcc (mingw на окнах) и если возможно смешать dlls, сгенерированный из различных компиляторов (я действительно сомневаюсь, что это возможно),
Спасибо
NO, __ 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 в качестве препроцессора Определение (найдено в проекте | Имя свойства. Под C / C ++ | препроцессор | определения препроцесс). Таким образом, вы экспортируете их при построении DLL, импортируете их, когда вы используете DLL и ничего не делаете специалистики под Unix.
Все, что начинается с __ в C ++, является специфическим поставщиком расширение. Я не знаю, поддерживают ли какие-либо другие поставщики компилятора, но это, безусловно, не совместимому кросс-компилятору.
Вы должны попытаться удалить «Microsoft Visual Studio Web Authoring Component» (из программ). У меня была та же проблема и удалила этот компонент визуальной студии (подробнее об этом здесь ). Вы потеряете визуальный дизайнер, но VS больше не повесится.
-121--3068047-Понятие DLL является очень платформенным. Он не охвачен любым даже удаленно универсально применимым стандартом. Если тот факт, сама по себе Acronymy DLL обычно зарезервирована для динамических библиотек Windows. Ненабженные добавления, что-либо конкретное для поддержки DLL в C / C ++, очень зависит от платформы / поставщика.