У меня есть два проекта в моем решении. Одно из них — универсальное приложение C #, а другое — проект C ++ (полученный из Вот) и переназначен на Windows 8.1 (это было выполнено Visual Studio 15, когда я импортировал проект). Я ссылался на проект C ++ из моего проекта C # и установил для параметра «Копировать локально» значение true.
Код идеально подходит для всех трех платформ (x86, x64 и ARM). Однако при развертывании на устройстве ARM возникает исключение на линии, где я пытаюсь получить доступ к коду C ++. В версиях x86 и x64 это не проблема, и код работает отлично. Исключение составляет System.IO.FileNotFoundException
а также Вот пастбище исключения в деталях.
Насколько я понимаю, это исключение заключается в том, что сгенерированный .dll по какой-то причине не копируется на устройство? Я посмотрел на параметры конфигурации, и, насколько я могу судить, все настроено правильно (скриншот приведен ниже). Другая возможность состоит в том, что проект C ++ имеет внутреннюю зависимость от другого класса, который мне как-то нужно идентифицировать и ссылаться откуда-то. Есть строка из трассировки стека (включенная в вышеупомянутую ссылку на вставку), которая предполагает, что это происходит в строке System.StubHelpers.StubHelpers.GetWinRTFactoryObject(IntPtr pCPCMD)
,
Код C ++ использует компоненты Media Foundation WinRT и должен прекрасно работать на устройствах ARM.
Кажется, что другие вопросы по SO (такие как Вот) также смотрели на это, но только для одной конкретной платформы, такой как x86.
Есть ли какая-то конкретная причина, почему это в настоящее время работает на x86 и x64, но не на ARM?
Скриншоты:
и переназначен на Windows 8.1
Это твоя проблема прямо здесь. Если вы ориентируетесь на устройство Windows 10, вам нужно создать новый компонент среды выполнения Windows (Universal Windows):
Я предполагаю, что Windows 8.1 Winmd не совместим с выбранным вами устройством.
Я скачал инструмент VideoRecorder и воспроизвел вашу проблему. Затем, если я создаю новую Winmd Universal Windows, добавляю в нее файлы C ++, она без проблем запускается на Raspberry Pi 2 с Windows 10 IoT.
РЕДАКТИРОВАТЬ: Если вы нацелены на устройство Windows 8.1, а не устройство Windows 10, то вам нужен проект Universal Windows 8.1:
Я сделал образец и развернул его на Nokia Lumia 925 без проблем.