Я читал, что небезопасно звонить LoadLibrary()
от DllMain [source].Безопасно ли вызывать LoadLibrary из main()?
Но безопасно ли звонить с точки входа консольного приложения, main()
? Я не могу найти никакой информации об этом.
Спасибо!
Я читал, что небезопасно звонить LoadLibrary()
от DllMain [source].Безопасно ли вызывать LoadLibrary из main()?
Но безопасно ли звонить с точки входа консольного приложения, main()
? Я не могу найти никакой информации об этом.
Спасибо!
Да, это безопасно. Если вы не могли позвонить LoadLibrary
с main
, вы не могли бы назвать его нигде в консольном процессе, который был бы глупым.
DllMain
является особенным, потому что во время разговора удерживается «блокиратор загрузчика» и вызывается (для статически связанных DLL) до того, как процесс полностью инициализирован.
С собственной ссылке:
Функция точки входа следует выполнять только простые инициализации или завершения задачи. Он не должен вызывать функцию LoadLibrary или LoadLibraryEx (или функцию, которая вызывает эти функции), , потому что может создавать циклы зависимостей в порядке загрузки DLL.
Как консольное приложение не является частью DLL нагрузочной цепи, она безопасна