Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2013.03.22;
Скачать: CL | DM;

Вниз

.NET dll   Найти похожие ветки 

 
Pit   (2012-02-13 20:09) [0]

Ребят, сейчас нет возможности проверить...

Допустим, имеем DLL, скомпилированную с помощью VS 2010 на c# под .NET 4.0

Что будет, если сделать над этой DLL функцию LoadLibrary(test.dll, ...), когда .NET на машине не установлен?
Получит ли DLL-ка хоть какое-то управление "внутрь" себя или LoadLibrary вернет 0... а какая тогда ошибка будет по GetLastError?


 
icelex ©   (2012-02-13 20:43) [1]

а что значит "хоть какое-то"?


 
Pit   (2012-02-13 23:50) [2]

ну при аттачивании DLL в процесс - в ней в контексте потока запросившего LoadLibrary вызывается некая main функция в DLL. При загрузке в другом потоке в этом же процессе - тоже DLL уведомляется не помню уже каким - ATTACHE"м.

То есть, DLL прекрасно понимает, что ее загрузили, даже не вызвал ни одного метода.

Если же DLL скомпилена .NET языком - до нее управление дойдет как-то или функция LoadLibrary сама поймет, что DLL невозможно использовать и ругнется нулем... собственно, вот два вопроса выше сформулированы


 
DVM ©   (2012-02-14 00:18) [3]


> Если же DLL скомпилена .NET языком - до нее управление дойдет
> как-то или функция LoadLibrary сама поймет, что DLL невозможно
> использовать и ругнется нулем

Ну как минимум из DLL выполнится код, который ответственен за загрузку CLR. Он выдаст ошибку.


 
Pit   (2012-02-14 00:35) [4]

а что вернет LoadLibrary? ноль?
А расшифровку GetLastError тогда какую? ...


 
Dimka Maslov ©   (2012-02-14 09:27) [5]

LoadLibrary, скорее всего, таки загрузит модуль. Это не возбраняется. Вдруг мы модуль загружаем для тырения ресурсов. И GetProcAddress таки вернёт адрес функции, ибо это тоже не возбраняется. Вдруг мы хотим лишь проверить её существование. А вот уже вызов этого метода покажет по полной, что мы были не правы, пытаясь это сделать.


 
Pit   (2012-02-14 12:56) [6]


> LoadLibrary, скорее всего, таки загрузит модуль. Это не
> возбраняется. Вдруг мы модуль загружаем для тырения ресурсов

ну с тем же успехом можно предположить, что любая .NET"овская DLL тянет зависимость на системные .NET библиотеки. Соответственно, не загрузится, если на компьютере их нету.

С exe меня ситуация в свое время поразила. Когда запускаешь .NET экзешник на системе без framework"а, то пишется непонятная ошибка с кодом аля: 0xZZZZZZ, догадаться непросвященнному, что это не хватает .NET - нереально просто!! Бред какой-то... Даже виндовые приложение в DOS выкидывали сообщение типа "must win bla bla...".

Вот интересно, что с DLL, а проверить сейчас никак не могу.


 
Dimka Maslov ©   (2012-02-14 13:16) [7]


> Соответственно, не загрузится


Соответственно, загрузится, но работать не будет.


 
Pit   (2012-02-14 13:19) [8]


> Соответственно, загрузится

эээ... ты уверен? По-моему, если DLL по секции импорта тянет за собой функцию из другой DLL, которую система не нашла, то никакой загрузки не произойдет, вернется null.


 
Dimka Maslov ©   (2012-02-14 13:38) [9]

А что мешает таки поставить эксперимент? Что же касается самого CLR, то она вроде как есть набор com-серверов, имеющих типовую таблицу импорта.


 
Pit   (2012-02-14 17:27) [10]

а везде .NET стоит и удалять нельзя


 
Dimka Maslov ©   (2012-02-14 17:32) [11]

А раз он везде стоит, в чём проблема-то?


 
icWasya ©   (2012-02-15 12:02) [12]

Вот щас посмотрел - dll для NET с точки зрения нативного кода не экспортирует НИЧЕГО и импортирует _CorDllMain из mscoree.dll


 
Pit   (2012-02-15 13:38) [13]

ага, а mscoree.dll это часть .NET.. То есть, исходя из этого LoadLibrary над нетовской DLL без установленного фреймворка просто вернет null.
Спасибо


 
CRLF   (2012-02-15 13:44) [14]


> Вдруг мы модуль загружаем для тырения ресурсов.
Для тырения ресурсов надо не LoadLibrary, а LoadLibraryEx с флагом LOAD_LIBRARY_AS_DATAFILE.



Страницы: 1 вся ветка

Текущий архив: 2013.03.22;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.233 c
2-1329425543
Редиска
2012-02-17 00:52
2013.03.22
Получить код подгружаемой страницы в IndyHTTPProxyServer


15-1348943921
ClawClaw
2012-09-29 22:38
2013.03.22
Фон сайта


15-1349424452
Roman_man
2012-10-05 12:07
2013.03.22
Что-то с отрображением файлов.


15-1333280133
sniknik
2012-04-01 15:35
2013.03.22
Сделать открытие popup в IE как в mozilla


15-1340630910
Ханунад
2012-06-25 17:28
2013.03.22
Возможно ли создать два фрейма?