Я столкнулся с проблемой при использовании встроенной C ++ DLL в ядре приложения C # .NET в контейнере Windowsservercore Docker. Получение следующей ошибки при попытке вызвать открытый API из собственной библиотеки DLL с помощью pInvoke из приложения C # .NET Core.
Ошибка: невозможно загрузить DLL «MyDLL»: указанный модуль не найден. (Исключение из HRESULT: 0x8007007E)
Проблема: в моем контейнере докеров Windows (сборка из базового образа windowsservercore) есть одна базовая служба C # .net, выполняющаяся .. по конкретному запросу POST. Мне нужно вызвать функцию из собственной C ++ DLL, я вызываю ее с помощью pInvoke. Теперь проблема заключается в том, что собственная DLL не загружается, потому что некоторые из ее зависимостей отсутствуют в образе контейнера. Я попытался установить возможные распространяемые файлы VC ++ ..., но это не решает проблему .. поэтому при проверке полного дерева зависимостей (с помощью обходчика зависимостей) Я узнал, что в образе базовой док-станции windowsservercore отсутствуют некоторые системные библиотеки.
Ниже приведен список некоторых отсутствующих библиотек формы docker.
c:\windows\system32\ELSCORE.DLL
c:\windows\system32\DEVMGR.DLL
c:\windows\system32\DCOMP.DLL
c:\windows\system32\DSREG.DLL
c:\windows\system32\SHDOCVW.DLL
c:\windows\system32\COREUICOMPONENTS.DLL
c:\windows\system32\POLICYMANAGER.DLL
c:\windows\system32\OPENGL32.DLL
Итак, мой вопрос: как решить эти зависимости системного уровня lib от контейнера? Я понимаю, что по понятным причинам (минимизация размера изображения) эти библиотеки исключены из базового образа докера windowsservercore. Но есть ли какой-нибудь стандартный способ / установщик / пакет, который устанавливает недостающие системные библиотеки в мой образ докера? или я должен пойти с грязным вручную скопировать все необходимые библиотеки в папку system32
PS: этот же код работает на хост-машине (windows server 2016) после установки распространяемого VC ++, просто он не работает с контейнером Docker для windowsservercore (даже после установки упомянутого распространяемого VC ++).
Спасибо,
-Harsh