![]() |
|
![]() ![]() ![]() |
|
Belerafon |
|
|||
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 4.7.2007 Репутация: нет Всего: нет |
Re. Вопрос. BCB6. Делаю библиотеку и программу, ее использующую. Статическая линковка. Если в библиотеке начать использовать AnsiString (объявляю одну локальную переменную и никуда не передаю), то при выходе из основной программы получаю RunTime Error 204 (неправильный указатель).
Вот код библиотеки:
В основоной программе просто добавляю проект lib файл, а затем вызываю (просто так) TestFunc. При выходе из программы получаю ошибку. AnsiString, где бы не объявлял, вызывает ошибку. Без нее все работает. Пробовал sharemem, не помогает. Так же пробовал использовать класс TThread, при его объявлении такая же история. Хотя и программа и библиотека работают без проблем. Вот только при выходе... Почему так? Какие еще варианты попробовать? Другие виды строк не устраивают - все равно нужно будет использовать TThread, а проблема судя по всему общая, что-то с классами... |
|||
|
||||
Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 18 Всего: 154 |
А как линкуется RTL к библиотеке и программе?
(опция Lincker - Use dynamic RTL ) |
|||
|
||||
JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 4 Всего: 162 |
Lazin, тебе надо подрубить, кажется, BCBMM.dll и lib, что-то вроде этого...
А вообще лучше не пользоваться передачей параметров AnsiString из/в библиотеке, об этом Борланд пишет (писала, по крайней мере). Сделай лучше std::string или char* на худой конец. Это сообщение отредактировал(а) JackYF - 4.7.2007, 14:24 |
|||
|
||||
Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 18 Всего: 154 |
при чём здесь это, он просто глобальную переменную создал, никуда не передавал. Ошибка происходит при её удалении. |
|||
|
||||
Fazil6 |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1653 Регистрация: 3.5.2006 Где: Минск Репутация: 11 Всего: 60 |
ну во первых std::string по большому счету ничем не лучше AnsiString в таком варианте и во-вторых где ты тут видишь вообще передачу строк? |
|||
|
||||
Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 18 Всего: 154 |
можно попробовать с линковать dll и exe, с динамической CRTL, за удаление глобальных переменных именно она и отвечает.
|
|||
|
||||
JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 4 Всего: 162 |
||||
|
||||
Belerafon |
|
|||
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 4.7.2007 Репутация: нет Всего: нет |
Спасибо. Проблема решилась снятием галочки "Use dynamic RTL" в основной программе. После этого ошибка попала.
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++ Builder" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C++ Builder | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |