Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Переменные из DLL / 11 сообщений из 11, страница 1 из 1
13.09.2004, 08:45
    #32691155
Alex_VC
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Переменные из DLL
Можно ли при явном подключении библиотеки dll (через LoadLibrary) "достать" из нее экспортируемые данные (не функции)? (Если можно-то как) С экспортируемыми функциями все понятно, а вот с данными -? В примерах, которые нашел- только через неявное подключение.
...
Рейтинг: 0 / 0
13.09.2004, 09:22
    #32691191
Mr.Buba
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Переменные из DLL
Alex_VCМожно ли при явном подключении библиотеки dll (через LoadLibrary) "достать" из нее экспортируемые данные (не функции)? (Если можно-то как) С экспортируемыми функциями все понятно, а вот с данными -? В примерах, которые нашел- только через неявное подключение.

нет, только если это не динамические структуры, которые возвращаются через какую нибудь функцию. DLL (как и другие библиотеки) - экспортируют только код.
...
Рейтинг: 0 / 0
13.09.2004, 10:16
    #32691256
Александр Спелицин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Переменные из DLL
Вы можете экспортировать функции, которые вернут указатель на Ваши переменные-данные.
...
Рейтинг: 0 / 0
13.09.2004, 16:40
    #32692307
Siebentearbeit
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Переменные из DLL
А я вот как-то делал визардом проект на MFC так он мне шаблон накатал, в котором были экспортируемая функция, экспортируемая переменная и экспортируемый класс
...
Рейтинг: 0 / 0
14.09.2004, 07:37
    #32692910
Alex_VC
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Переменные из DLL
Да экспортировать можно ,в принципе , все , весь вопрос в том, что при неявном подключении библиотеки (когда в проект компилится хидер данной библиотеки (.h) ну и еще .lib в придачу), то там можно через общие сегменты памяти сделать (#pragma data_seg(".MYSEG")...) . А вот при явном- по-видимому низя (пришлось через функции делать).
...
Рейтинг: 0 / 0
14.09.2004, 12:46
    #32693501
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Переменные из DLL
Mr.Buba Alex_VCМожно ли при явном подключении библиотеки dll (через LoadLibrary) "достать" из нее экспортируемые данные (не функции)? (Если можно-то как) С экспортируемыми функциями все понятно, а вот с данными -? В примерах, которые нашел- только через неявное подключение.

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

Не говори, чего не знаешь. Закажи новый проект в AppWizard типа "Win32 DLL Library", выбери галку "A DLL that exports some symbols", скомпилируй ее и посмотри, как это "невозможно".

Через "явное подключение" данные грузятся точно так же , как и функции, только функции вызываются, а данные используются потом как-то импортирующей программой.
...
Рейтинг: 0 / 0
14.09.2004, 12:52
    #32693516
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Переменные из DLL
MasterZiv
Через "явное подключение" данные грузятся точно так же , как и функции, только функции вызываются, а данные используются потом как-то импортирующей программой.
Извиняюсь, не дописал. Я имел в виду, что это делается той же функцией GetProcAdress:

Platform SDK
The GetProcAddress function retrieves the address of an exported function or variable from the specified dynamic-link library (DLL).


FARPROC GetProcAddress(
HMODULE hModule,
LPCSTR lpProcName
);

Parameters
hModule
[in] Handle to the DLL module that contains the function or variable. The LoadLibrary or GetModuleHandle function returns this handle.
lpProcName
[in] Pointer to a null-terminated string that specifies the function or variable name , or the function's ordinal value. If this parameter is an ordinal value, it must be in the low-order word; the high-order word must be zero.
...
Рейтинг: 0 / 0
15.09.2004, 07:29
    #32694841
Sieben
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Переменные из DLL
function or variable name

от, спасиба!
не замечал раньше
...
Рейтинг: 0 / 0
27.09.2004, 10:31
    #32712218
Alex_VC
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Переменные из DLL
Дошли руки попробовать предложенное MasterZiv.
Только толи руки не оттуда растут, толи голова...
Вообщем, делаю так:
в DLL:

__declspec(dllexport) MyStr="Тест";

В приложении:

hm=LoadLibrary("mydll.dll")
typedef LPCSTR (*_typ_mystr);
_typ_mystr _mystr;
_mystr=(_typ_mystr)GetProcAddress(hm,"MyStr");
// Здесь _mystr принимает значение "Тест"
// Как только в самой DLL изменяю занчение MyStr, то портиться _mystr в приложении : вместо строчки какая -то абракадабра...

Что не так делаю?
...
Рейтинг: 0 / 0
27.09.2004, 11:11
    #32712286
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Переменные из DLL
Alex_VCв DLL:

__declspec(dllexport) MyStr="Тест";

Где тип данных ?

Alex_VC
Что не так делаю?

Да ты все не так делаешь. Только без типа данных твоей переменной говорить об этом бессмысленно.
...
Рейтинг: 0 / 0
27.09.2004, 12:21
    #32712463
Alex_VC
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Переменные из DLL
Понедельник - день тяжелый...
Напарил с указателями сейчас все вроде заработало.
А тип был LPCSTR, но когда в DLL шло изменение значения данной переменной, то указывался адрес локальной переменной :
{
MyStr=(LPCSTR)obj.m_string;
}
, значение которой успешно грохалось после выхода из области видимости.
Поэтому все было плохо...
Всем спасибо.
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Переменные из DLL / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]