MSVC17 Статическое связывание приложения со временем выполнения, все еще получая отсутствующую ошибку DLL - PullRequest
0 голосов
/ 02 февраля 2019

Я установил / MT flag, чтобы мое приложение c ++ статически связывалось с средой выполнения C, поэтому мне не нужно беспокоиться о перераспределении среды выполнения, однако при запуске я получаю сообщение об ошибке, в котором говорится: «Api-ms-win-»ядро-версия-l1-1-0.dll».Как мне скомпилировать мое приложение так, чтобы оно полностью не зависело ни от какой среды выполнения и т. Д.

Среда сборки: MSVC 2017, Windows 10 SDK Компиляция и тестирование машины: 64-битная Windows 7

1 Ответ

0 голосов
/ 03 февраля 2019

Выбранный ответ здесь помог мне решить мою проблему.Короче говоря, вы не можете связываться ни с одной из библиотек api-ms-win-core *, вы должны связать их с соответствующими библиотеками, перечисленными для API в msdn.Библиотеки api-ms-win-core * используются ОС косвенно, поэтому они отображаются как отсутствующие - когда в действительности необходимо связать соответствующие windows .lib.

В моем случае я использовал зависимости, чтобы выяснить, какие библиотеки API отсутствовали, затем посмотрел соответствующие файлы .lib в msdn и добавил их в «дополнительные зависимости».Проблема решена.

FYI, / MT флаг работает должным образом, мне не нужно перераспределять c-runtime и т. Д.

...