Как P / Invoke на родную dll из Метро? - PullRequest
6 голосов
/ 18 октября 2011

У меня есть библиотека, состоящая из двух частей - одна сборка .net, которая P / вызывает для собственной сторонней библиотеки dll. В режиме рабочего стола это работает просто отлично: однако при обращении к сборке из приложения в стиле Metro и ее запуске она выдает System.DllNotFoundException на P / Invoke , жалуясь на то, что «Невозможно загрузить библиотеку DLL» : Указанный модуль не найден. "

Собственная dll не делает ничего особенного, а только создает исходящие соединения TCP / IP с сервером. Система не может этого знать, но родная dll может делать все что угодно. Вот почему я подозреваю, что это невозможно сделать.

Какой-то порядок поиска dll упоминается на msdn относительно приложений в стиле Metro, намекая на возможность загрузки собственных dll?

Также я нашел эту ссылку на msdn , говорящую о загрузке «библиотек» и упоминающую PackageDependency в файле манифеста, но мне все еще неясно , как добавить нативную dll в пакет способ, которым возможно P / Invoke it .

Ответы [ 2 ]

0 голосов
/ 02 июля 2014

Это наверное по замыслу. Ваша проблема может быть вызвана ошибкой с кодом ошибки 126, возвращаемым из LoadLibrary . Если ваше приложение работает в режиме рабочего стола, вы должны настроить режим рабочего стола для своего приложения. Вы также можете использовать более раннюю версию Windows.

0 голосов
/ 19 октября 2011

Добавьте его в свой проект (щелкните правой кнопкой мыши проект, Добавить, Существующий элемент.) Убедитесь, что в свойствах этого элемента для содержимого установлено значение True (по умолчанию это false). Build.

...