Поиск:

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


Unregistered











Люди, есть DLL'ка и приложение, в приложении код:
Код

char *data=new char[5];
strcpy(data,"Test");
//Здесь вызвается LoadLibrary и GetProcAddress
fnDLL(data); //Вызывается функуия из DLL и ей передаётся указатель на строку

В самой DLL'ке:
Код

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

Происходит ошибка, оно и понятно, т.к DLLка не видит переменных приложения, которым была загружена, как это лечить, как сделать так чтобы она их видела ?
MMF, shared data segments меня не устраивает, в моём проекте это не применимо...
  Вверх
Sheff_Guest
Дата 3.11.2004, 22:46 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Народ, плиз, хоть какие-нить идеи
  Вверх
bel_nikita
Дата 3.11.2004, 23:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2304
Регистрация: 12.10.2003
Где: Поезд №21/22 ( ст . Прага )

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



Цитата
Происходит ошибка, оно и понятно, т.к DLLка не видит переменных приложения,
А для меня не совсем понятно :( Если бы код ошибки посмотреть...

А если перегрузить delete?


--------------------
user posted image — регистрация доменов от 150 руб.
PM MAIL WWW ICQ   Вверх
Sheff_Guest
Дата 4.11.2004, 23:30 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Ошибка в общем странная, значение строки в "d" DLL'ка читает, а вот удалить по этому адресу не может.
Перегрузить delete ? Для типа char ??? А как это ?
  Вверх
bel_nikita
Дата 5.11.2004, 00:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2304
Регистрация: 12.10.2003
Где: Поезд №21/22 ( ст . Прага )

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



Может, так попробуй:
strcpy(&data[0],"Test");
fnDLL(&data[0]);
Хотя это тоже самое, но все же попробуй.

З.Ы.: А вообще не понятно: зачем в ДЛЛке очищать? Ведь приложение выделело память, и значит должно само за собой убрать, а не передавать это в ДЛЛ


--------------------
user posted image — регистрация доменов от 150 руб.
PM MAIL WWW ICQ   Вверх
Sheff_as_Guest
Дата 7.11.2004, 21:02 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











bel_nikita, не помогло...
  Вверх
Mad
Дата 7.11.2004, 21:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Выделять надо не new а GlobalAlloc
тоди GlobalFree будет нормально освобождать память.


--------------------
user posted image
PM MAIL   Вверх
BraM's
Дата 10.11.2004, 12:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Хороший стиль програмирования, ИМХО, заставляет освобождать память "там же" где она была выделена. Не надо передавать такие штучки в ДЛЛ на освобождение... Чего-то я в smile ударился
PM MAIL ICQ   Вверх
mr.DUDA
Дата 10.11.2004, 22:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

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



используй виртуальные деструкторы (тема уже поднималась !!)


--------------------
user posted image
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




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


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

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