Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];

Вниз

.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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.057 c
2-1330501412
AV
2012-02-29 11:43
2013.03.22
Заменяя ProcessMessages


15-1344870494
stas
2012-08-13 19:08
2013.03.22
DelphiXE 2 FireMonkey


2-1328363804
whoim
2012-02-04 17:56
2013.03.22
динамический двумерный массив of integer: не могу найти ошибку..


15-1334144994
Дмитрий С
2012-04-11 15:49
2013.03.22
Что вообще такое SLIC?


15-1347000404
ford
2012-09-07 10:46
2013.03.22
алгоритм для анализа изображения





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский