Я пытаюсь понять, возможно ли создать с помощью VS2013 один двоичный файл, который будет работать как на устройствах Windows 8.1, так и на устройствах Windows Phone 8.1 ARM.
Я создаю один проект универсальных приложений (в Visual C ++ -> Магазин приложений -> Универсальные приложения) для компонента среды выполнения Windows. Когда я создаю это, он генерирует два отдельных бинарных файла — для Windows и Phone.
Входами компоновщика являются runtimeobject.lib и kernel32.lib
Дамп файла RuntimeComponent1.Windows \ RuntimeComponent1.Windows.dll
Изображение имеет следующие зависимости:
vccorlib120_app.DLL
msvcp120_app.dll
msvcr120_app.dll
ole32.dll
api-ms-win-core-winrt-string-l1-1-0.dll
KERNEL32.dll
Входами компоновщика являются WindowsPhoneCore.lib, RuntimeObject.lib и PhoneAppModelHost.lib
Дамп файла RuntimeComponent1.WindowsPhone \ RuntimeComponent1.WindowsPhone.dll
Изображение имеет следующие зависимости:
api-ms-win-core-com-l1-1-1.dll
vccorlib120_app.DLL
msvcp120_app.dll
msvcr120_app.dll
api-ms-win-core-util-l1-1-0.dll
api-ms-win-core-synch-l1-2-0.dll
api-ms-win-core-profile-l1-1-0.dll
api-ms-win-core-processthreads-l1-1-2.dll
api-ms-win-core-sysinfo-l1-2-1.dll
api-ms-win-core-libraryloader-l1-2-0.dll
api-ms-win-core-winrt-string-l1-1-0.dll
Я полагаю, что все зависимости в Phone также могут быть достигнуты для Windows также с помощью некоторых других библиотек импорта, кроме kernel32.lib. Это правильно? Есть ли способ достичь этого вообще? то есть создание одного двоичного файла ARM для Win8.1 и WP8.1?
Я изменил настройки главы Windows, чтобы она ссылалась на mincore.lib, и специально проигнорировал kernel32.lib и ole32.lib. Теперь двоичные файлы Windows и Phone получают одинаковые зависимости:
Окна:
vccorlib120_app.DLL
msvcp120_app.dll
msvcr120_app.dll
api-ms-win-core-util-l1-1-0.dll
api-ms-win-core-synch-l1-2-0.dll
api-ms-win-core-com-l1-1-1.dll
api-ms-win-core-winrt-string-l1-1-0.dll
api-ms-win-core-profile-l1-1-0.dll
api-ms-win-core-processthreads-l1-1-2.dll
api-ms-win-core-sysinfo-l1-2-1.dll
api-ms-win-core-libraryloader-l1-2-0.dll
Телефон с операционной системой Виндоус:
vccorlib120_app.DLL
msvcp120_app.dll
msvcr120_app.dll
api-ms-win-core-util-l1-1-0.dll
api-ms-win-core-synch-l1-2-0.dll
api-ms-win-core-com-l1-1-1.dll
api-ms-win-core-profile-l1-1-0.dll
api-ms-win-core-processthreads-l1-1-2.dll
api-ms-win-core-sysinfo-l1-2-1.dll
api-ms-win-core-libraryloader-l1-2-0.dll
api-ms-win-core-winrt-string-l1-1-0.dll
Однако это возможно только для x86, так как Windows 8.1 SDK не содержит импорта lib mincore.lib для ARM
Мне удалось получить mincore.lib для ARM в Windows Driver Kit (WDK) для Windows 8.1: https://msdn.microsoft.com/library/windows/hardware/dn249725%28v=vs.85%29.aspx
Он устанавливается в папке Windows Kits, как для Windows 10 SDK.