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

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

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

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

Через "явное подключение" данные грузятся точно так же , как и функции, только функции вызываются, а данные используются потом как-то импортирующей программой.
...
Рейтинг: 0 / 0
Переменные из DLL
    #32693516
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Переменные из DLL
    #32694841
Sieben
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
function or variable name

от, спасиба!
не замечал раньше
...
Рейтинг: 0 / 0
Переменные из DLL
    #32712218
Alex_VC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дошли руки попробовать предложенное 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
Переменные из DLL
    #32712286
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_VCв DLL:

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

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

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

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


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