WTL::CString
От: Аноним  
Дата: 29.05.03 07:53
Оценка:
CString передается по ссылке в функцию из другой dll. При попутке изменить его из функции вылетает какая-то ошибка. Почему это происходит? В MFC такого не было...
Re: WTL::CString
От: de_fault Беларусь  
Дата: 29.05.03 08:21
Оценка:
Здравствуйте, <Аноним>, Вы писали:

Разные менеджеры памяти, вот и вылетает. Лучше передавать через char *.
... << RSDN@Home 1.0 beta 7a >>
Re: WTL::CString
От: EugenF Украина  
Дата: 29.05.03 08:32
Оценка:
Здравствуйте, Аноним, Вы писали:

А>CString передается по ссылке в функцию из другой dll. При попутке изменить его из функции вылетает какая-то ошибка. Почему это происходит? В MFC такого не было...


Dll твоя ? Если да, то посмотри чтобы и для неё и для основного проекта в runtime-library стояло Using multithreaded DLL.
Re: WTL::CString
От: Odi$$ey Россия http://malgarr.blogspot.com/
Дата: 29.05.03 09:23
Оценка:
Здравствуйте, Аноним, Вы писали:

А>...В MFC такого не было...


...а MFC если с динамической линковкой, там всегда только Using multithreaded DLL
Re[2]: WTL::CString
От: Аноним  
Дата: 29.05.03 10:35
Оценка:
Здравствуйте, de_fault, Вы писали:

>Разные менеджеры памяти, вот и вылетает. Лучше передавать через char *.


Замечательно, но только на самом деле у меня передается не одна строка, а ссылка на массив структур, в которых есть строки, и дллка должна их заполнить. И что же теперь делать? Не переходить же из-за этого на std::string!
Re[3]: WTL::CString
От: Odi$$ey Россия http://malgarr.blogspot.com/
Дата: 29.05.03 10:42
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Не переходить же из-за этого на std::string!


в данном случае это не поможет — см. STL в DLL
Автор(ы): Роман Хациев
Дата: 27.02.2002
Если вы пытались работать с экземплярами классов STL, передавая их в DLL, или получая оттуда, а потом бросили это занятие из-за непонятных ошибок, возникающих в вашей программе, то эта заметка для вас. Даже если видимых проблем в вашей программе нет, то все равно прочитайте эту заметку, чтобы знать что делать, когда они появятся :)
Re[4]: WTL::CString
От: Аноним  
Дата: 29.05.03 11:16
Оценка:
Здравствуйте, Odi$$ey, Вы писали:


А>>Не переходить же из-за этого на std::string!


OE>в данном случае это не поможет — см. STL в DLL
Автор(ы): Роман Хациев
Дата: 27.02.2002
Если вы пытались работать с экземплярами классов STL, передавая их в DLL, или получая оттуда, а потом бросили это занятие из-за непонятных ошибок, возникающих в вашей программе, то эта заметка для вас. Даже если видимых проблем в вашей программе нет, то все равно прочитайте эту заметку, чтобы знать что делать, когда они появятся :)


Странно, а у меня std::string передается в длл и успешно там модифицируется... Может из-за того, что у меня VC7.1?
Re[3]: WTL::CString
От: de_fault Беларусь  
Дата: 29.05.03 12:20
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>Здравствуйте, 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 >>
Re[5]: WTL::CString
От: Nikto Россия  
Дата: 30.05.03 03:01
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, Odi$$ey, Вы писали:



А>>>Не переходить же из-за этого на std::string!


OE>>в данном случае это не поможет — см. STL в DLL
Автор(ы): Роман Хациев
Дата: 27.02.2002
Если вы пытались работать с экземплярами классов STL, передавая их в DLL, или получая оттуда, а потом бросили это занятие из-за непонятных ошибок, возникающих в вашей программе, то эта заметка для вас. Даже если видимых проблем в вашей программе нет, то все равно прочитайте эту заметку, чтобы знать что делать, когда они появятся :)


А>Странно, а у меня std::string передается в длл и успешно там модифицируется... Может из-за того, что у меня VC7.1?


Может быть дело в том, что VC7.1 использует библиотеки msvcr7.1(и иже сними), а дллка скомпилина, например, под msvcr7.0(и иже сними). Может там память по другому выделяется или че-нить в этом роде.
Re: WTL::CString
От: Akzhan Россия http://www.akzhan.midi.ru/devcorner/
Дата: 30.05.03 13:25
Оценка:
Здравствуйте, Аноним, Вы писали:

А>CString передается по ссылке в функцию из другой dll. При попутке изменить его из функции вылетает какая-то ошибка. Почему это происходит? В MFC такого не было...


Я всегда в таких случаях использую BSTR, и мои волосы остаются пушистыми
С уважением,
Акжан, http://www.akzhan.midi.ru/devcorner/ — мой уголок разработчика
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.