Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 5.00
Dev_tech
0 / 0 / 0
Регистрация: 22.04.2011
Сообщений: 4
#1

Использование STL в DLL-файлах - C++

22.04.2011, 21:29. Просмотров 1499. Ответов 7
Метки нет (Все метки)

Хочу использовать библиотеку STL в своем DLL-проекте. В частности для обеспечения функциональности требуется применение классов vector и string.
Проблема заключается в том, что объекты классов, размещенные в этом DLL-файле и работающие с STL-классами, при уничтожении вызывают ошибку. Причем не на стадии компиляции, а во время выполнения программы.
Использовать CArray и CString и другие типы не имеется возможности. Нужен кросс-платформенный код, который можно компилировать как динамические библиотеки.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
palva
2460 / 1682 / 216
Регистрация: 08.06.2007
Сообщений: 6,643
Записей в блоге: 4
22.04.2011, 22:20     Использование STL в DLL-файлах #2
Наверно, объект у вас создается в DLL, а уничтожается в основной программе или наоборот? Нужно либо это устранить, либо использовать API функции GlobalAlloc/GlobalFree. Если память выделяется при выполнении new, значит придется переопределять operator new. Имеются другие варианты решения проблемы - пользоваться OLE API функциями типа CoTaskMemAlloc.
Dev_tech
0 / 0 / 0
Регистрация: 22.04.2011
Сообщений: 4
22.04.2011, 22:40  [ТС]     Использование STL в DLL-файлах #3
В DLL-файле содержится только исходный код двух классов, один из которых абстрактный. В основной программе создается объект одного из этих классов, потом происходит вызов некоторых функций-членов и завершение программы, а соответственно и удаление объекта.
Специально вызывал деструктор класса и отслеживал все в дебагере - ошибка происходит на нем.
Операторы new и delete используются только во внутренних функциях класса - его объекты создаются простым объявлением.
Отдельно, вне DLL, оба класса совершенно корректно работают.
Meer
0 / 0 / 0
Регистрация: 19.02.2011
Сообщений: 17
23.04.2011, 15:49     Использование STL в DLL-файлах #4
http://www.rsdn.ru/article/cpp/stlproblem.xml
Sandr_from_COBRA
0 / 0 / 0
Регистрация: 20.03.2011
Сообщений: 10
25.04.2011, 04:48     Использование STL в DLL-файлах #5
На самом деле может быть много ошибок как явных так и неявных - это просто гадания на кофейной гуще. Если это действительно для тебя большая нерешаемая проблема, давай исходняк с комментариями.
Dev_tech
0 / 0 / 0
Регистрация: 22.04.2011
Сообщений: 4
25.04.2011, 17:59  [ТС]     Использование STL в DLL-файлах #6
Все отлично работает без использования .dll, при обычном подключении файлов в проект. Все функции нормально работают и все объекты нормально уничтожаются.
Sandr_from_COBRA
0 / 0 / 0
Регистрация: 20.03.2011
Сообщений: 10
26.04.2011, 04:16     Использование STL в DLL-файлах #7
Ошибка может быть неявной, может себя вести по разному в разных условиях. Наверное ты гденить перекрываешь участок памяти. Всё это происходит в тайне от тебя.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.04.2011, 10:28     Использование STL в DLL-файлах
Еще ссылки по теме:

Использование стандартных компонентов stl C++
C++ STL in DLL, нормальная работа не возможна?
C++ Использование принципов ООП для поиска в файлах разного типа
C++ Использование list stl для вывода в файл
Использование класса list STL C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Sandr_from_COBRA
0 / 0 / 0
Регистрация: 20.03.2011
Сообщений: 10
28.04.2011, 10:28     Использование STL в DLL-файлах #8
Помойму ответ на твой вопрос нашолся
http://www.rsdn.ru/
Yandex
Объявления
28.04.2011, 10:28     Использование STL в DLL-файлах
Ответ Создать тему
Опции темы

Текущее время: 04:51. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru