![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 17.04.2009
Сообщений: 8
|
![]()
Здравствуйте, вопрос такой. Передаю в DLL указатель на класс. При попытке вызвать в библиотеке через этот указатель одну из процедур класса, получаю ошибку Invalid Pointer Operation. Смотрел где вылетает - на строчке FreeMem. Класс писал не я, не могли бы подсказать, что делаю не так?
|
![]() |
![]() |
![]() |
#2 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]()
Код в студию.
I'm learning to live...
|
![]() |
![]() |
![]() |
#3 |
Регистрация: 17.04.2009
Сообщений: 8
|
![]()
Спасибо, я уже сам разобрался )) Проблема была в том, что в классе были переменные типа String, подключил ShareMem. Теперь другая проблема возникла, если при завершении приложения выскакивает аналогичная ошибка - это значит что я не освободил память?
|
![]() |
![]() |
![]() |
#4 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]()
Это может означать все что угодно.
Вообще такие штуки лучше делать в BPL-ках, ибо с ними Делфи работает гораздо корректнее (родные всетки)
I'm learning to live...
|
![]() |
![]() |
![]() |
#5 |
Регистрация: 17.04.2009
Сообщений: 8
|
![]()
Ясно.. А ShareMem может как - то влиять на ошибку? Просто сейчас все убрал из приложения, только голую форму оставил - лезет ошибка на завершении
|
![]() |
![]() |
![]() |
#6 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]() Цитата:
![]()
I'm learning to live...
|
|
![]() |
![]() |
![]() |
#7 |
Android Developer
Старожил Подтвердите свой е-майл
Регистрация: 19.02.2007
Сообщений: 3,708
|
![]()
String нельзя использовать в DLL. Использовать только указатели PChar или PWChar. BPL - честно говоря это мне кажется вообще не вариант.
Перепишите все String только на PChar и PWChar проблемы все пропадут |
![]() |
![]() |
![]() |
#8 |
Регистрация: 17.04.2009
Сообщений: 8
|
![]()
String можно использовать в DLL. Проблема связанная со строками в библиотеках существует только из - за менеджера памяти. Поэтому и есть такая штука как Sharemem.
|
![]() |
![]() |
![]() |
#9 |
я получил эту роль
Старожил
Регистрация: 25.05.2007
Сообщений: 3,694
|
![]()
ShareMem должен быть и в проекте и в dll первым в списке модулей.
Т.е. не в Unit1.pas, а в Project1.dpr и Library1.dpr Кстати чтоб не таскать с собой лишнюю дллку, есть неплохая альтернатива - FastShareMem
пыщь
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Указатели | Mango | Помощь студентам | 2 | 09.12.2008 12:15 |
Указатели | JOFRIF | Общие вопросы C/C++ | 2 | 31.08.2008 18:34 |
Указатели | Принц | Общие вопросы C/C++ | 2 | 08.06.2008 16:15 |
Указатели в Си | Иллидан | Общие вопросы C/C++ | 7 | 20.02.2008 11:14 |
Указатели Си | JET_FLASH | Общие вопросы C/C++ | 2 | 31.01.2008 23:02 |