|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
17.04.2009, 12:12 | #1 |
Регистрация: 17.04.2009
Сообщений: 8
|
Указатели в DLL
Здравствуйте, вопрос такой. Передаю в DLL указатель на класс. При попытке вызвать в библиотеке через этот указатель одну из процедур класса, получаю ошибку Invalid Pointer Operation. Смотрел где вылетает - на строчке FreeMem. Класс писал не я, не могли бы подсказать, что делаю не так?
|
17.04.2009, 12:52 | #2 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Код в студию.
I'm learning to live...
|
17.04.2009, 14:13 | #3 |
Регистрация: 17.04.2009
Сообщений: 8
|
Спасибо, я уже сам разобрался )) Проблема была в том, что в классе были переменные типа String, подключил ShareMem. Теперь другая проблема возникла, если при завершении приложения выскакивает аналогичная ошибка - это значит что я не освободил память?
|
17.04.2009, 14:25 | #4 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Это может означать все что угодно.
Вообще такие штуки лучше делать в BPL-ках, ибо с ними Делфи работает гораздо корректнее (родные всетки)
I'm learning to live...
|
17.04.2009, 14:31 | #5 |
Регистрация: 17.04.2009
Сообщений: 8
|
Ясно.. А ShareMem может как - то влиять на ошибку? Просто сейчас все убрал из приложения, только голую форму оставил - лезет ошибка на завершении
|
17.04.2009, 14:59 | #6 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
I'm learning to live...
|
|
17.04.2009, 15:48 | #7 |
Android Developer
Старожил Подтвердите свой е-майл
Регистрация: 19.02.2007
Сообщений: 3,708
|
String нельзя использовать в DLL. Использовать только указатели PChar или PWChar. BPL - честно говоря это мне кажется вообще не вариант.
Перепишите все String только на PChar и PWChar проблемы все пропадут |
17.04.2009, 17:25 | #8 |
Регистрация: 17.04.2009
Сообщений: 8
|
String можно использовать в DLL. Проблема связанная со строками в библиотеках существует только из - за менеджера памяти. Поэтому и есть такая штука как Sharemem.
|
17.04.2009, 19:07 | #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 |