Почему созданная в C++ Builder 10.3 dll при динамической загрузке в exe, созданному в VisualStudio 19, не выполняет код DllMain?

Dll написана и скомпилирована в С++ Builder 10.3 и включает в себя объекты Indy 10. Indy 10 написана на Delphi и содержит раздел initialization, в котором создается CriticalSection. При динамической загрузке в exe, созданном в С++ Builder, инициализация dll проходит корректно: выполняется код в разделе initialization, соответственно создается объект CriticalSection. Также выполняется код и в DllMain.
Если же динамически подгрузить ту же dll в exe, созданный в Visual Studio 19, то код в разделе initialization не выполняется. Что при обращении к не созданному объекту CriticalSection в последующем коде вызывает AV. Также не выполняется код и в DllMain.
_libmain, которую автоматически создает C++ Builder в dll была заменена на DllMain. Результат тот же: exe от C++ Builder в нее заходит, а exe от VS нет. Что можете порекомендовать?
Дополнение: если создать проект простого консольного приложения в VS с нуля и динамически подключить dll, то все разделы инициализации dll выполняются корректно. В проекте VS, по которому задан вопрос, exe загружает плагин, а уже плагин подгружает dll. Может проблема где-то в настройках проекта VS?
  • Вопрос задан
  • 192 просмотра
Пригласить эксперта
Ответы на вопрос 1
HemulGM
@HemulGM Куратор тега Delphi
Delphi Developer, сис. админ
Запусти под отладкой библиотеку в VS
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы