Как добавить неуправляемую DLL C ++ в проект Silverlight 5

Мне нужно использовать мой собственный неуправляемый C ++ dll в проекте Silverlight 5.

Как я могу использовать его, используя dllImport, т.е.

   [DllImport(@"D:\myLib\Debug\myLib.dll")]
static extern int add(IntPtr ptr);

Это прекрасно работает, так как я обозначил абсолютный путь в DllImport. Но моя проблема в том, что я хочу использовать относительный путь.

Так как мне нужно добавить неуправляемую C ++ dll в мой проект silverlight 5 и указать путь оттуда.
Я расследую последние два дня, я не нашел никакого решения для этой проблемы.

Только я нашел одну ссылку, упомянутую ниже, но это также не помогает.

http://msdn.microsoft.com/en-us/library/system.runtime.interopservices.dllimportattribute.dllimportattribute.aspx

Как это предложить, как встроить вашу неуправляемую DLL в управляемую сборку.
Я попробовал этот подход, но я получаю «BadImageException».

Пожалуйста, предложите более подробно остановиться на этом вопросе, так как он действительно актуален для меня.

Спасибо,

Vipin

4

Решение

Когда Silverlight 5 Release Candidate был обнародован, я создал несколько методов поддержки для решения этой проблемы объединения неуправляемых несистемных DLL-файлов с вашим приложением Silverlight 5 RC. Решение остается в силе, поскольку Microsoft не добавила никакой поддержки для решения проблемы комплектации в Silverlight 5 RTM.

То, что я делаю, — это, в основном, связываю неуправляемую DLL в качестве файла ресурсов. Через вспомогательный метод, вызываемый вручную, например, в обработчике события запуска приложения ресурс копируется в предопределенное место на диске. Это местоположение затем также включается в системный PATH во время выполнения.

Требуется повышенное доверие (конечно).

Более подробную информацию об этом решении можно найти в этот Сообщение блога.

Весь код, связанный с этим решением, включая примеры тестов, можно найти на Github.

ОБНОВИТЬ

Как указано в последующем комментарии Саймона Мурье, одним из вариантов также может быть загрузка в память (и освобождение при выходе из приложения) неуправляемой DLL путем вызова Kernel32 LoadLibrary функция после того, как DLL была распакована из ресурсов. Этот подход для Silverlight более подробно описан в этот Сообщение блога.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]