Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# .NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
SkoTi
-20 / 5 / 6
Регистрация: 03.10.2012
Сообщений: 532
1

Переменные из dll в exe

04.02.2013, 05:30. Просмотров 972. Ответов 5
Метки нет (Все метки)

Здравствуйте вот уже сколько мучаюсь извлечением переменных из dll

Помогите. Есть динамическая библиотека lib.dll
В ней переменная Form1Text типа stringe
мне нужно её применить в первой форме this.text = Form1Text;
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.02.2013, 05:30
Ответы с готовыми решениями:

Упаковать exe и dll в один exe файл
Добрый день! Для защиты использую IlProtector. На выходе получается exe и 2...

Запуск Load.dll (бывшая Load.exe) в дереве проц-ов, Как запустить прогой на C# .dll-ку
Подскажите, как должен выглядеть код простейшей программы на C# (Loader.exe),...

Как вернуть переменные из dll обратно в программу?
Есть dll в которой процедура берет несколько целочисленных переменных и...

exe=>dll
у меня имееться обычный проект на си шарпе как из него сделать dll -ку...

Объединить exe и dll
В проекте находится решение самой программы и решение dll ки. Как сделать чтобы...

5
dondublon
2147 / 1065 / 213
Регистрация: 17.03.2012
Сообщений: 6,429
Записей в блоге: 5
04.02.2013, 08:11 2
Переменная находится в памяти, а не в dll-файле.
Кроме того, есть такое понятие, как область видимости переменной. Без понимания этого - никак.
Прочитайте про неё, потом вернитесь к вашей проблеме.
0
Vitalii
58 / 58 / 17
Регистрация: 09.06.2009
Сообщений: 117
04.02.2013, 12:35 3
Может вам надо использовать класс DllImportAttribute

В примере показано использования атрибута DllImportAttribute для импорта функции MessageBox.
Свойство EntryPoint используется, чтобы задать импортируемую функцию. Затем имя изменяется на MyNewMessageBoxMethod.


C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
using System;
using System.Runtime.InteropServices;
 
class Example
{
    // Use DllImport to import the Win32 MessageBox function.
    // Specify the method to import using the EntryPoint field and 
    // then change the name to MyNewMessageBoxMethod.
    [DllImport("user32.dll", CharSet = CharSet.Unicode, EntryPoint = "MessageBox")]
    public static extern int MyNewMessageBoxMethod(IntPtr hWnd, String text, String caption, uint type);
 
    static void Main()
    {
        // Call the MessageBox function using platform invoke.
        MyNewMessageBoxMethod(new IntPtr(0), "Hello World!", "Hello Dialog", 0);
    }
}
0
dondublon
2147 / 1065 / 213
Регистрация: 17.03.2012
Сообщений: 6,429
Записей в блоге: 5
04.02.2013, 12:56 4
Цитата Сообщение от Vitalii Посмотреть сообщение
Может вам надо использовать класс DllImportAttribute
Штука в том, что вызывающий получит на переменную, а значение.
А это совсем другое - по смыслу.
0
SkoTi
-20 / 5 / 6
Регистрация: 03.10.2012
Сообщений: 532
05.02.2013, 04:44  [ТС] 5
-_-"
Плиз... Мне проссто нужно записать адреса и всякие да или нет статические которые меняются обновлением... Мне 10 переменных нужно хранить в dll что бы проще было обновлять...
0
dondublon
2147 / 1065 / 213
Регистрация: 17.03.2012
Сообщений: 6,429
Записей в блоге: 5
05.02.2013, 07:38 6
Видите ли, в чем дело.
Если вы именно так ставите вопрос, значит, вы плохо понимаете, что такое переменная, и как с ними обращаться.
В частности, такая вещь, как область видимости, и зачем она придумана.
Вокруг этого дело как раз и накручена львиная доля современного программирования, в частности - разделение кода на библиотеки (dll). Зачем разделяют код на библиотеки? Не для того ведь, чтобы вам насолить.
Код разделяют для т.н. борьбы со сложностью.
Код разделяют на компоненты, а связь между ними должна быть по минимуму и стандартизирована. Потому что много "глупых" связей - это сложно, а желание "извлечь переменную" - это именно "глупая" связь, так не делается. Как именно делать хорошие, умные связи - это вопрос сложный, этому, наверное, всю жизнь учатся. В этом и состоит наука хорошего стиля программирования.

В вашем случае, для начала уточните, какие данные вы будете получать из dll.
Нативная у вас либа или дотнетная. Если второе - учтите, что импортируются только классы.
Если нативная - возможна похожая ситуация, когда переменная внутри какого-то класса, которых в процессе будет 100500.
И учтите, что ПЕРЕМЕННУЮ вы из dll-ки не получите (это - грязнохак и не рассматриваем). Вы можете вызвать функцию и получить ее значение (если не дотнет). При этом, откуда функция возьмет значение (переменная там или еще что-то) - вызывающая программа знать не должна, в принципе.
1
05.02.2013, 07:38
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.02.2013, 07:38

Объединить dll и exe
Необходимо, чтобы программа была как один единственный экзешник, но проблема в...

Склеивание .dll и пользовательского .exe
Доброго времени суток, уважаемые форумчане ! Вложений всего пять, поэтому...

Присоединить DLL на C# к EXE файлу
Здраствуйте, я хотел присоединить DLL на C# к EXE файлу (в виде модуля), но мне...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru