Модераторы: feodorv, GremlinProg, xvr, Fixin
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> DLL и программа, shared variables 
:(
    Опции темы
Sheff_Guest
Дата 31.10.2004, 21:40 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Уважаемые программисты, такая проблема:
Есть код в проге:
Код

char *data;
data=new char[5];
strcpy(data,"Test");
//LoadLibrary, GetProcAddress, вобщем загружаю библиотеку и беру адрес функции
fnDLL(data);

Функция fnDLL в DLL'ке:
Код

void fnDLL(char* d)
{
   delete[] d;
}

Тут-то и вылетает ошибка и ясное дело, адрес-то я передаю из проги, а в DLL своя адресация и переменных из проги она не видит, как это исправить, тока MMF, shared data segment'ы не предлагать, меня это не устраивает
  Вверх
S.A.P.
Дата 1.11.2004, 08:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2664
Регистрация: 11.6.2004

Репутация: нет
Всего: 71



А стоит ли так поступать? Не лучше ли освобождать память в вызывающем процессе?
PM MAIL   Вверх
Vaulter
Дата 1.11.2004, 11:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1724
Регистрация: 30.12.2002
Где: бункер

Репутация: нет
Всего: 22



Sheff_Guest
ошибка скорее всего ближе к этому месту
Код

void fnDLL(char* d)
{
   delete[] d;
}

, поподробнее...


--------------------
PM MAIL WWW ICQ   Вверх
S.A.P.
Дата 1.11.2004, 11:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2664
Регистрация: 11.6.2004

Репутация: нет
Всего: 71



Цитата(Vaulter @ 1.11.2004, 11:28)

ошибка скорее всего ближе к этому месту

Vaulter, указатель передается из другого адресного пространства в этом то и ошибка, а вот как закрыть память из DLL?
PM MAIL   Вверх
Guest
Дата 1.11.2004, 12:34 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Цитата(Perchilla @ 1.11.2004, 11:41)

указатель передается из другого адресного пространства в этом то и ошибка
DLL загружается в адресное пространство процесса её загрузившего.
  Вверх
Mad
Дата 1.11.2004, 12:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Эксперт
Сообщений: 656
Регистрация: 18.10.2004
Где: Одесса

Репутация: 2
Всего: 19



Цитата(Sheff_Guest @ 31.10.2004, 21:40)

MMF, shared data segment'ы не предлагать, меня это не устраивает

Вопервых непонятно чем не устраивает :)


Цитата(Perchilla @ 1.11.2004, 11:41)

указатель передается из другого адресного пространства

DLL-ка вообщето грузится в адресное пространства процесса (иначе она вообще смогла бы общатся с вызвашим только через IPC механизмы).

Тут дело в new.
Попробуй заменить его на GlobalAlloc. а delete на GlobalFree (такая схема у меня работает).


--------------------
user posted image
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.0850 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.