|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » .NET - Упаковка используемых dll в exe |
|
.NET - Упаковка используемых dll в exe
|
Старожил Сообщения: 191 |
Пишу утилитку, использующую функции AutoItX3.dll и Interop.AutoItX3Lib.dll. Т.к AutoItX3.dll есть х64 и х86, то чтобы не путаться самому и не путать пользователя, необходимо эти dll упаковать в exe, а при необходимости загружать в память (без выгрузки на диск).
Пытался добавить эти библиотеки в проект с флагом Build Action = Embedded Resource, в результате размер exe-шника вырос в соответствии с размерами библиотек, но когда дело доходит до вызова функций AutoItX3, вылетает ошибка System.IO.FileNotFoundException. Interop.AutoItX3Lib.dll используется как референс. Собственно вопрос - как упаковать эти библиотеки, чтобы оно работало? |
|
------- Отправлено: 14:49, 05-03-2010 |
Старожил Сообщения: 191
|
Профиль | Отправить PM | Цитировать Что, никто не знает?
![]() |
------- Отправлено: 13:20, 08-03-2010 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
![]() Ветеран Сообщения: 1180
|
Профиль | Отправить PM | Цитировать Flammable, к сожалению, никто...
У меня возникло несколько вопросов: 1) так ли необходимо таскать обе библиотеки в экзешнике? а если попробовать их сопуствующими файлами загружать динамически (в зависимости от ситуации), а ещё лучше указать в манифесте, какую библиотеку должен замапировать в адресное пространство загрузчик 2) я так понимаю что вы используете статическое линкование (с тонкостями с# не знаком), а вызывать их пробуете динамически |
Отправлено: 22:05, 08-03-2010 | #3 |
Старожил Сообщения: 191
|
Профиль | Отправить PM | Цитировать Цитата pva:
По этой же причине я компилирую солюшн без манифеста. 2. Я добавляю референс AutoItX3Lib (Interop.AutoItX3Lib.dll) и вызываю его методы. |
|
------- Отправлено: 22:33, 08-03-2010 | #4 |
![]() Обратный инженер Сообщения: 644
|
Профиль | Отправить PM | Цитировать Flammable, я бы делал так: распаковывал нужную либу из ресурсов во временную директорию, далее подгружал её с помощью LoadLibrary, находил адрес нужной функции через GetProcAddress и далее работал бы с этим делом.Это на мой взгляд наиболее человечный вариант, если вы хотите, чтобы либы находились в ресурсах.Как это всё будет выглядеть в ДоДиезе, я понятия не имею.
Цитата Flammable:
|
||
------- Отправлено: 01:41, 09-03-2010 | #5 |
![]() Ветеран Сообщения: 1180
|
Профиль | Отправить PM | Цитировать что-то туплю я... экзешник полностью в память загружается/маппируется или нет?
а если собрать 2 версии (32 и 64) со статической линковкой и инсталлятором? код то 64 и 32 всё равно различается |
Отправлено: 08:07, 09-03-2010 | #6 |
Старожил Сообщения: 191
|
Профиль | Отправить PM | Цитировать Сам разобрался. Если кому интересно - ищите утилиту IL Merge.
|
------- Отправлено: 19:16, 12-08-2010 | #7 |
Будем жить, Маэстро... Сообщения: 6694
|
Профиль | Сайт | Отправить PM | Цитировать Flammable, А ссылку скинуть влом?
|
------- Отправлено: 20:35, 12-08-2010 | #8 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Ошибка - Не запускается explorer.exe из-за пропажи WININET.dll | l1nker | Microsoft Windows 2000/XP | 4 | 05-08-2009 12:04 | |
Разное - Использование команд из user.exe(dll) | n9271217 | Microsoft Windows 2000/XP | 0 | 13-01-2009 14:58 | |
Не опознается hal.dll,ntoskrnl.exe,KDCOM.DLL | Igor_strelka | Microsoft Windows 2000/XP | 3 | 12-01-2007 23:23 | |
Pascal exe и С++ dll | Server | Программирование и базы данных | 6 | 25-09-2006 11:48 | |
Написание упаковщика exe, dll на c++ Builder | DIMAIN | Программирование и базы данных | 4 | 30-04-2005 23:44 |
|