CString передается по ссылке в функцию из другой dll. При попутке изменить его из функции вылетает какая-то ошибка. Почему это происходит? В MFC такого не было...
Здравствуйте, <Аноним>, Вы писали:
Разные менеджеры памяти, вот и вылетает. Лучше передавать через char *.
... << RSDN@Home 1.0 beta 7a >>
Здравствуйте, Odi$$ey, Вы писали:
А>>Не переходить же из-за этого на std::string!
OE>в данном случае это не поможет — см. STL в DLLАвтор(ы): Роман Хациев
Дата: 27.02.2002
Если вы пытались работать с экземплярами классов STL, передавая их в DLL, или получая оттуда, а потом бросили это занятие из-за непонятных ошибок, возникающих в вашей программе, то эта заметка для вас. Даже если видимых проблем в вашей программе нет, то все равно прочитайте эту заметку, чтобы знать что делать, когда они появятся :)
Странно, а у меня std::string передается в длл и успешно там модифицируется... Может из-за того, что у меня VC7.1?
Здравствуйте, <Аноним>, Вы писали:
А>Здравствуйте, de_fault, Вы писали:
>Разные менеджеры памяти, вот и вылетает. Лучше передавать через char *.
А>Замечательно, но только на самом деле у меня передается не одна строка, а ссылка на массив структур, в которых есть строки, и дллка должна их заполнить. И что же теперь делать? Не переходить же из-за этого на std::string!
Ну зачем такие крайности....
Не знаю, что там у вас конкретно, но я сталкивался с такой проблемой. Было 3 решения оной:
1 перед использованием любой строки созданной в DLL делать следующий маневр.
CString str=(LPCSTR)strFromDll;
И использовать str;
Не выполнять операций типа strFromDll=str;
Может помочь, но неудобно в использовании.
2 Написать собственный менеджер памяти и использовать его во всех DLL и exe проекта
3 Не использовать статическую ликовку RTL
Для себя я выбрал пункт 2.
... << RSDN@Home 1.0 beta 7a >>
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, Odi$$ey, Вы писали:
А>>>Не переходить же из-за этого на std::string!
OE>>в данном случае это не поможет — см. STL в DLLАвтор(ы): Роман Хациев
Дата: 27.02.2002
Если вы пытались работать с экземплярами классов STL, передавая их в DLL, или получая оттуда, а потом бросили это занятие из-за непонятных ошибок, возникающих в вашей программе, то эта заметка для вас. Даже если видимых проблем в вашей программе нет, то все равно прочитайте эту заметку, чтобы знать что делать, когда они появятся :)
А>Странно, а у меня std::string передается в длл и успешно там модифицируется... Может из-за того, что у меня VC7.1?
Может быть дело в том, что VC7.1 использует библиотеки msvcr7.1(и иже сними), а дллка скомпилина, например, под msvcr7.0(и иже сними). Может там память по другому выделяется или че-нить в этом роде.
Здравствуйте, Аноним, Вы писали:
А>CString передается по ссылке в функцию из другой dll. При попутке изменить его из функции вылетает какая-то ошибка. Почему это происходит? В MFC такого не было...
Я всегда в таких случаях использую BSTR, и мои волосы остаются пушистыми