Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Экспорт классов в gcc (MinGW)
Форум на CrossPlatform.RU > Разработка > Инструменты разработчика
soMan
Требуется написать библиотеку, но ни разу этого не делал. В частности никогда не экспортировал классы. Подскажите, пожалуйста, как в gcc с экспортом целых классов?
Достаточно ли будет нижеследующего кода для экспорта или такое не прокатит?
#define DLLEX __declspec(dllexport)

class DLLEX MyExportedClass
{
    //here some code
}


И что по поводу тех классов, члены которых содержат экземляры STLовских классов или классов стандартной библиотеки? Нормально ли экспортируется след. код? Читал где-то, что мелкомягкий компиль более-менее с нытьем (warnings) экспортирует, про gcc же ни слова.
#define DLLEX __declspec(dllexport)

class DLLEX MyExportedClass
{
    wstring m_myString;
    vector<int> m_MyVector;
    //here some code
}

Возможно, кто-то сталкивался с этим, буду рад услышать ответы, а так же подводные камни, которые следует знать и учесть.
Iron Bug
в gcc у тебя экспортируются все классы, есть специальные декларации для ограничения видимости:
http://gcc.gnu.org/wiki/Visibility

учти, что совместимости таких библиотек между разными компиляторами нет. т.е., нельзя экспортировать классы из библиотеки, скомпиленной под gcc, и использовать её в вызовах из программы, скомпиленной под msvc, например.

в пределах одного компилятора проблем с STL-объектами вроде не наблюдалось. не экспортируются разве что темплейты - ну, это понятно почему: ибо генерятся на уровне компиляции.
soMan
Iron Bug, благодарю за ответ. Темплейты не юзаю у себя, думаю норм все в библиотеку соберется. Чтобы не создавать снова тему еще хотелось бы спросить все о том же gcc: как можно узнать причину SIGINT? При отладке приложения после отработки всех функций получаю SIGINT (Quit with SIGINT). Отдельный запуск приложения без отладки отрабатывает нормально. В Вики прочитал, что мол прерывание процесса это. Вопрос почему и как за хвост поймать?
Iron Bug
Цитата(soMan @ 7.3.2012, 2:26) *
как можно узнать причину SIGINT

обычно это реакция на Ctrl-C, принудительное завершение процесса со стороны юзера.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.