Существует проблема вызова функций испульзующих STL и располагающихся в DLL, тем что при выделении памяти в дебажной версии они выкидывают ASSERT ( в релизе вообще ничего хорошего не жду). Просмотрел много материала на эту тему и запутался)) Помогите разобратся как лучше решить проблему!! Всеж хочется совсем избавится от использования CRT но использовать STL. Как это соотносится с VC7? Поскольку статья "Анатомия C Run-Time, или Как сделать программу немного меньшего размера" и "Заметка о некоторых особенностях использования STL в DLL" для VC6. Есть ли какая нить адаптация STL для такой проблемы только VC7? Поскольку если использую вектор, то библиотека CRT всеж прикручивается
Здравствуйте, ShootNik, Вы писали:
SN>Существует проблема вызова функций испульзующих STL и располагающихся в DLL, тем что при выделении памяти в дебажной версии они выкидывают ASSERT ( в релизе вообще ничего хорошего не жду). Просмотрел много материала на эту тему и запутался)) Помогите разобратся как лучше решить проблему!! Всеж хочется совсем избавится от использования CRT но использовать STL. Как это соотносится с VC7? Поскольку статья "Анатомия C Run-Time, или Как сделать программу немного меньшего размера" и "Заметка о некоторых особенностях использования STL в DLL" для VC6. Есть ли какая нить адаптация STL для такой проблемы только VC7? Поскольку если использую вектор, то библиотека CRT всеж прикручивается
В чем вопрос-то?
Да, есть проблемы использования STL в DLL под VC6, и такой проблемы под VC7 насколько я знаю, нету.
Правило наименьшего удивления: Программа должна работать так, чтобы это вызывало наименьшее удивление у пользователя.
Построй свой мини-горд на http://rumactep.myminicity.com/
Проблемы будут только в том случае если ты выделяешь память в одной Dll(EXE), а освобождаешь в другой. Другими словами, только если у тебя stl-евские обьекты (в принципе, не только STL-евские, но для STL проще не заметить где выделяется память) передаются через интерфейс Dll. Решение в лоб — юзай COM (в нём строго регламентировано где, кем и как освобождается память).
Если у тебя STL-обьекты за пределы Dll не передаются, никаких проблем не получишь.
Здравствуйте, Left2, Вы писали:
L>Проблемы будут только в том случае если ты выделяешь память в одной Dll(EXE), а освобождаешь в другой. Другими словами, только если у тебя stl-евские обьекты (в принципе, не только STL-евские, но для STL проще не заметить где выделяется память) передаются через интерфейс Dll. Решение в лоб — юзай COM (в нём строго регламентировано где, кем и как освобождается память).
L>Если у тебя STL-обьекты за пределы Dll не передаются, никаких проблем не получишь.
Даже если передаются, то в VC 2002 и выше, вроде не было проблем при использовании DLL versions of the run-time libraries