0 / 0 / 0
Регистрация: 22.04.2011
Сообщений: 4
|
|
1 | |
Использование STL в DLL-файлах22.04.2011, 21:29. Показов 2286. Ответов 7
Метки нет (Все метки)
Хочу использовать библиотеку STL в своем DLL-проекте. В частности для обеспечения функциональности требуется применение классов vector и string.
Проблема заключается в том, что объекты классов, размещенные в этом DLL-файле и работающие с STL-классами, при уничтожении вызывают ошибку. Причем не на стадии компиляции, а во время выполнения программы. Использовать CArray и CString и другие типы не имеется возможности. Нужен кросс-платформенный код, который можно компилировать как динамические библиотеки.
0
|
22.04.2011, 21:29 | |
Ответы с готовыми решениями:
7
Использование указателей на контейнеры STL в заголовочных файлах Как посмотреть значки (иконки) в файлах shell32.dll, imageres.dll В файлах hfnapi.dll и hfpapi.dll вирус stl и dll |
22.04.2011, 22:20 | 2 |
Наверно, объект у вас создается в DLL, а уничтожается в основной программе или наоборот? Нужно либо это устранить, либо использовать API функции GlobalAlloc/GlobalFree. Если память выделяется при выполнении new, значит придется переопределять operator new. Имеются другие варианты решения проблемы - пользоваться OLE API функциями типа CoTaskMemAlloc.
0
|
0 / 0 / 0
Регистрация: 22.04.2011
Сообщений: 4
|
|
22.04.2011, 22:40 [ТС] | 3 |
В DLL-файле содержится только исходный код двух классов, один из которых абстрактный. В основной программе создается объект одного из этих классов, потом происходит вызов некоторых функций-членов и завершение программы, а соответственно и удаление объекта.
Специально вызывал деструктор класса и отслеживал все в дебагере - ошибка происходит на нем. Операторы new и delete используются только во внутренних функциях класса - его объекты создаются простым объявлением. Отдельно, вне DLL, оба класса совершенно корректно работают.
0
|
0 / 0 / 3
Регистрация: 19.02.2011
Сообщений: 17
|
|
23.04.2011, 15:49 | 4 |
http://www.rsdn.ru/article/cpp/stlproblem.xml
0
|
0 / 0 / 0
Регистрация: 20.03.2011
Сообщений: 10
|
|
25.04.2011, 04:48 | 5 |
На самом деле может быть много ошибок как явных так и неявных - это просто гадания на кофейной гуще. Если это действительно для тебя большая нерешаемая проблема, давай исходняк с комментариями.
0
|
0 / 0 / 0
Регистрация: 22.04.2011
Сообщений: 4
|
|
25.04.2011, 17:59 [ТС] | 6 |
Все отлично работает без использования .dll, при обычном подключении файлов в проект. Все функции нормально работают и все объекты нормально уничтожаются.
0
|
0 / 0 / 0
Регистрация: 20.03.2011
Сообщений: 10
|
|
26.04.2011, 04:16 | 7 |
Ошибка может быть неявной, может себя вести по разному в разных условиях. Наверное ты гденить перекрываешь участок памяти. Всё это происходит в тайне от тебя.
0
|
0 / 0 / 0
Регистрация: 20.03.2011
Сообщений: 10
|
|
28.04.2011, 10:28 | 8 |
Помойму ответ на твой вопрос нашолся
http://www.rsdn.ru/
0
|
28.04.2011, 10:28 | |
28.04.2011, 10:28 | |
Помогаю со студенческими работами здесь
8
STL внутри DLL использование stl Использование STL Использование STL - C++ Использование STL Использование String Tables в .dll(.dll.mui) (Для VB .NET) Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |